home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: Alpha / Whiteline Alpha.iso / sound / midi / vce_edit / vce_edit.gfa (.txt) < prev    next >
Encoding:
GFA-BASIC Atari  |  1994-09-24  |  70.1 KB  |  3,353 lines

  1. '
  2. '
  3. ' --------------------INITIALISIERUNG-----------------
  4. '
  5. CLS
  6. DEFMOUSE 8
  7. SHOWM
  8. $I+
  9. $U+
  10. '
  11. DIM voice#(64,730)  ! 64 Vioces á 730 Voicedaten werden erwartet
  12. '
  13. IF EXIST("VCE_EDIT.PIC")               !
  14.   screen$=STRING$(32000,0)             !
  15.   BLOAD "VCE_EDIT.PIC",VARPTR(screen$) ! Bildmaske, wenn vorhanden, laden
  16.   SPUT screen$                         !
  17. ELSE                                   !
  18.   PAUSE 10
  19.   ALERT 1,"Kann Bildmaske nicht finden| |     (VCE_EDIT.PIC)",1," ENDE ",dummy#
  20.   END
  21. ENDIF
  22. GET 35,280,119,376,pitch_eg$
  23. '
  24. GOSUB list_voicename
  25. GOSUB list_algorithm
  26. GOSUB list_lfo
  27. GOSUB list_pitch_eg
  28. GOSUB list_oscillator
  29. GOSUB list_eg
  30. GOSUB list_scaling_mode
  31. GOSUB list_sensitivity
  32. GOSUB list_pitch_bend
  33. GOSUB list_portamento
  34. GOSUB list_modulations_wheel
  35. GOSUB list_foot_control
  36. GOSUB list_breath_control
  37. GOSUB list_aftertouch
  38. kanal#=144
  39. vn#=1
  40. DEFTEXT 1,0,0,6
  41. TEXT 5,40,"01"
  42. DEFTEXT 1,0,0,4
  43. '
  44. '
  45. ' ---------------- HAUPTPROGRAMM (ANFANG) -----------------
  46. '
  47. DO
  48.   MOUSE x#,y#,k#
  49.   IF k#
  50.     IF x#>2 AND x#<24
  51.       IF y#>63 AND y#<95
  52.         GOSUB plus
  53.       ENDIF
  54.       IF y#>101 AND y#<134
  55.         GOSUB minus
  56.       ENDIF
  57.     ENDIF
  58.   ELSE
  59.     IF l#=1
  60.       CLR l#
  61.       GOSUB list_voicename
  62.       GOSUB list_algorithm
  63.       GOSUB list_lfo
  64.       GOSUB list_pitch_eg
  65.       GOSUB list_oscillator
  66.       GOSUB list_eg
  67.       GOSUB list_scaling_mode
  68.       GOSUB list_sensitivity
  69.       GOSUB list_pitch_bend
  70.       GOSUB list_portamento
  71.       GOSUB list_modulations_wheel
  72.       GOSUB list_foot_control
  73.       GOSUB list_breath_control
  74.       GOSUB list_aftertouch
  75.       SHOWM
  76.     ENDIF
  77.   ENDIF
  78.   IF y#<24
  79.     IF x#<71 AND MOUSEK=1
  80.       DEFTEXT 1,1,0,13
  81.       TEXT 18,18,"Autor"
  82.       DEFTEXT 1,0,0,4
  83.       GOSUB autor
  84.       PRINT AT(1,1);CHR$(7);
  85.       DEFTEXT 1,0,0,13
  86.       TEXT 18,18,"Autor"
  87.       DEFTEXT 1,0,0,4
  88.       WHILE MOUSEK<>0
  89.       WEND
  90.     ENDIF
  91.     IF x#>71 AND x#<138 AND MOUSEK=1
  92.       DEFTEXT 1,1,0,13
  93.       TEXT 89,18,"File"
  94.       DEFTEXT 1,0,0,4
  95.       GOSUB file
  96.       PRINT AT(1,1);CHR$(7);
  97.       DEFTEXT 1,0,0,13
  98.       TEXT 89,18,"File"
  99.       DEFTEXT 1,0,0,4
  100.       WHILE MOUSEK<>0
  101.       WEND
  102.     ENDIF
  103.     IF x#>138 AND x#<236 AND MOUSEK=1
  104.       DEFTEXT 1,1,0,13
  105.       TEXT 161,18,"Receive"
  106.       DEFTEXT 1,0,0,4
  107.       GOSUB clr_midibuffer
  108.       GOSUB receive_mididata
  109.       CLR test%
  110.       FOR i%=1 TO 730
  111.         IF voice#(vn#,i%)<>0
  112.           INC test%
  113.         ENDIF
  114.       NEXT i%
  115.       IF test%>0
  116.         GOSUB list_voicename
  117.         GOSUB list_algorithm
  118.         GOSUB list_lfo
  119.         GOSUB list_pitch_eg
  120.         GOSUB list_oscillator
  121.         GOSUB list_eg
  122.         GOSUB list_scaling_mode
  123.         GOSUB list_sensitivity
  124.         GOSUB list_pitch_bend
  125.         GOSUB list_portamento
  126.         GOSUB list_modulations_wheel
  127.         GOSUB list_foot_control
  128.         GOSUB list_breath_control
  129.         GOSUB list_aftertouch
  130.       ENDIF
  131.       PRINT AT(1,1);CHR$(7);
  132.       DEFTEXT 1,0,0,13
  133.       TEXT 161,18,"Receive"
  134.       DEFTEXT 1,0,0,4
  135.       WHILE MOUSEK<>0
  136.       WEND
  137.     ENDIF
  138.     IF x#>236 AND x#<305 AND MOUSEK=1
  139.       DEFTEXT 1,1,0,13
  140.       TEXT 256,18,"Send"
  141.       DEFTEXT 1,0,0,4
  142.       GOSUB send_data
  143.       PRINT AT(1,1);CHR$(7);
  144.       DEFTEXT 1,0,0,13
  145.       TEXT 256,18,"Send"
  146.       DEFTEXT 1,0,0,4
  147.       WHILE MOUSEK<>0
  148.       WEND
  149.     ENDIF
  150.     IF x#>305 AND x#<378 AND MOUSEK=1
  151.       DEFTEXT 1,1,0,13
  152.       TEXT 326,18,"Edit"
  153.       DEFTEXT 1,0,0,4
  154.       GOSUB voice_edit
  155.       PRINT AT(1,1);CHR$(7);
  156.       DEFTEXT 1,0,0,13
  157.       TEXT 326,18,"Edit"
  158.       DEFTEXT 1,0,0,4
  159.       WHILE MOUSEK<>0
  160.       WEND
  161.     ENDIF
  162.     IF x#>378 AND x#<463 AND MOUSEK=1
  163.       DEFTEXT 1,1,0,13
  164.       TEXT 400,18,"Print"
  165.       DEFTEXT 1,0,0,4
  166.       GOSUB print_data
  167.       PRINT AT(1,1);CHR$(7);
  168.       DEFTEXT 1,0,0,13
  169.       TEXT 400,18,"Print"
  170.       DEFTEXT 1,0,0,4
  171.       WHILE MOUSEK<>0
  172.       WEND
  173.     ENDIF
  174.     IF x#>463 AND x#<559 AND MOUSEK
  175.       IF kanal#<159 AND MOUSEK=1
  176.         INC kanal#
  177.         DEFTEXT 1,0,0,13
  178.         TEXT 534,18,"  "
  179.         TEXT 534,18,kanal#-143
  180.         DEFTEXT 1,0,0,4
  181.         SHOWM
  182.       ENDIF
  183.       IF kanal#>144 AND MOUSEK=2
  184.         DEC kanal#
  185.         DEFTEXT 1,0,0,13
  186.         TEXT 534,18,"  "
  187.         TEXT 534,18,kanal#-143
  188.         DEFTEXT 1,0,0,4
  189.         SHOWM
  190.       ENDIF
  191.       WHILE MOUSEK<>0
  192.       WEND
  193.     ENDIF
  194.     IF x#>559 AND x#<637 AND MOUSEK=1
  195.       PAUSE 10
  196.       ALERT 2," |  |Programm beenden      ",1," JA | NEIN ",dummy#
  197.       IF dummy#=1
  198.         END
  199.       ENDIF
  200.     ENDIF
  201.   ENDIF
  202. LOOP
  203. '
  204. ' ---------------- HAUPTPROGRAMM (ENDE) ------------------
  205. '
  206. '
  207. ' -------- DATA für Procedure "list_algorithm" ------------
  208. transpose:
  209. DATA C1 ,C#1,D1 ,D#1,E1 ,F1 ,F#1,G1 ,G#1,A1 ,A#1,"B1 "
  210. DATA C2 ,C#2,D2 ,D#2,E2 ,F2 ,F#2,G2 ,G#2,A2 ,A#2,"B2 "
  211. DATA C3 ,C#3,D3 ,D#3,E3 ,F3 ,F#3,G3 ,G#3,A3 ,A#3,"B3 "
  212. DATA C4 ,C#4,D4 ,D#4,E4 ,F4 ,F#4,G4 ,G#4,A4 ,A#4,"B4 "
  213. DATA C5 ,ERR
  214. '
  215. '
  216. '
  217. '
  218. ' ------------ DATA für Procedure "list_lfo" --------------
  219. wave:
  220. DATA triangle,saw down,saw up  ,square  ,sine    ,"s/hold  "
  221. '
  222. '
  223. '
  224. '
  225. ' ---------- DATA für Procedure "list_pitch_eg" -----------
  226. rng:
  227. DATA 8oct.,2oct.,1oct.,½oct.
  228. '
  229. '
  230. '
  231. '
  232. ' --------- DATA für Procedure "list_oscillator" ----------
  233. fixed:
  234. DATA 0,23,47,72,96,122,148,175,202,230,259,288,318,349,380,413,445,479,514,549
  235. DATA 585,622,660,698,738,778,820,862,905,950,995,1042,1089,1138,1188,1239,1291
  236. DATA 1344,1399,1455,1512,1570,1630,1692,1716,1818,1884,1951,2020,2090,2162
  237. DATA 2236,2311,2388,2467,2548,2631,2715,2802,2890,2981,3074,3169,3266,3365,3467
  238. DATA 3571,3677,3786,3898,4012,4129,4248,4370,4495,4623,4754,4888,5026,5166,5310
  239. DATA 5457,5607,5761,5918,6079,6244,6413,6586,6762,6943,7128,7318,7511,7718,7913
  240. DATA 8120,8333,8550,8772
  241. '
  242. '
  243. '
  244. '
  245. ' -------- DATA für Procedure "list_scaling_mode" ---------
  246. bp:
  247. DATA A-1 ,A#-1,"B-1 "
  248. DATA C0  ,C#0 ,D0  ,D#0 ,E0  ,F0  ,F#0 ,G0  ,G#0 ,A0  ,A#0 ,"B0  "
  249. DATA C1  ,C#1 ,D1  ,D#1 ,E1  ,F1  ,F#1 ,G1  ,G#1 ,A1  ,A#1 ,"B1  "
  250. DATA C2  ,C#2 ,D2  ,D#2 ,E2  ,F2  ,F#2 ,G2  ,G#2 ,A2  ,A#2 ,"B2  "
  251. DATA C3  ,C#3 ,D3  ,D#3 ,E3  ,F3  ,F#3 ,G3  ,G#3 ,A3  ,A#3 ,"B3  "
  252. DATA C4  ,C#4 ,D4  ,D#4 ,E4  ,F4  ,F#4 ,G4  ,G#4 ,A4  ,A#4 ,"B4  "
  253. DATA C5  ,C#5 ,D5  ,D#5 ,E5  ,F5  ,F#5 ,G5  ,G#5 ,A5  ,A#5 ,"B5  "
  254. DATA C6  ,C#6 ,D6  ,D#6 ,E6  ,F6  ,F#6 ,G6  ,G#6 ,A6  ,A#6 ,"B6  "
  255. DATA C7  ,C#7 ,D7  ,D#7 ,E7  ,F7  ,F#7 ,G7  ,G#7 ,A7  ,A#7 ,"B7  "
  256. DATA "C8  "
  257. '
  258. '
  259. '
  260. '
  261. ' ------------------PROCEDUREN----------------------
  262. '
  263. > PROCEDURE autor
  264.   ALERT 0,"Programm von:|     Udo Hortian|     Flandersbach 29a    |     5603 Wülfrath",1," RETURN ",dummy#
  265. RETURN
  266. > PROCEDURE file
  267.   CLR dummy#
  268.   PAUSE 10
  269.   ALERT 2,"        VOICE-DATEN  |  |  |Voice:",1," LOAD | SAVE | ZURÜCK ",dummy#
  270.   IF dummy#=1
  271.     FILESELECT "\*.SND","",filename$
  272.     IF filename$<>""
  273.       OPEN "I",#1,filename$
  274.       CLR b$
  275.       a$="YAMAHA TX802"
  276.       FOR i%=1 TO 12
  277.         a%=INP(#1)
  278.         b$=b$+CHR$(a%)
  279.       NEXT i%
  280.       IF b$=a$
  281.         FOR i%=511 TO 730
  282.           a%=INP(#1)
  283.           voice#(vn#,i%)=a%
  284.         NEXT i%
  285.         CLOSE #1
  286.         GOSUB list_voicename
  287.         GOSUB list_algorithm
  288.         GOSUB list_lfo
  289.         GOSUB list_pitch_eg
  290.         GOSUB list_oscillator
  291.         GOSUB list_eg
  292.         GOSUB list_scaling_mode
  293.         GOSUB list_sensitivity
  294.         GOSUB list_pitch_bend
  295.         GOSUB list_portamento
  296.         GOSUB list_modulations_wheel
  297.         GOSUB list_foot_control
  298.         GOSUB list_breath_control
  299.         GOSUB list_aftertouch
  300.       ELSE
  301.         CLOSE #1
  302.         PAUSE 10
  303.         ALERT 1,"Falsches Datenformat| | ",1," RETURN ",dummy#
  304.       ENDIF
  305.     ENDIF
  306.   ENDIF
  307.   IF dummy#=2
  308.     CLR test%
  309.     '
  310.     FOR i%=517 TO 565
  311.       IF voice#(vn#,i%)<>0
  312.         INC test%
  313.       ENDIF
  314.     NEXT i%
  315.     FOR i%=574 TO 728
  316.       IF voice#(vn#,i%)<>0
  317.         INC test%
  318.       ENDIF
  319.     NEXT i%
  320.     '
  321.     IF test%>0
  322.       FILESELECT "\*.SND","",filename$
  323.       IF filename$<>""
  324.         OPEN "O",#1,filename$
  325.         a$="YAMAHA TX802"
  326.         FOR i%=1 TO 12
  327.           OUT #1,ASC(MID$(a$,i%,1))
  328.         NEXT i%
  329.         FOR i%=511 TO 730
  330.           OUT #1,voice#(vn#,i%)
  331.         NEXT i%
  332.         CLOSE #1
  333.       ENDIF
  334.     ELSE
  335.       PAUSE 10
  336.       ALERT 1,"Keine Daten",1," RETURN ",dummy#
  337.     ENDIF
  338.   ENDIF
  339. RETURN
  340. ' ---------------------------------VOICE-DATEN EMPANGEN + LISTEN (ANFANG)
  341. > PROCEDURE clr_midibuffer
  342.   DO
  343.     a#=0
  344.     IF INP?(3)
  345.       a#=INP(3)
  346.       a#=1
  347.     ENDIF
  348.     EXIT IF a#=0
  349.   LOOP
  350. RETURN
  351. > PROCEDURE receive_mididata
  352.   PAUSE 10
  353.   ALERT 2,"(Abbruch durch ESC)| |Empfangsbereit bestätigen:| | ",1," JA | NEIN ",dummy#
  354.   IF dummy#=1
  355.     DO
  356.       a#=0
  357.       IF INP?(3)
  358.         a#=INP(3)
  359.         a#=1
  360.       ENDIF
  361.       EXIT IF a#=0
  362.     LOOP
  363.     FOR vn#=1 TO 64
  364.       OUT 3,192
  365.       OUT 3,vn#-1
  366.       a$=STRING$(510,0)
  367.       OUT 3,240  !Voice-Daten  ACED
  368.       OUT 3,67
  369.       OUT 3,32
  370.       OUT 3,5
  371.       OUT 3,247
  372.       DO
  373.         a$=a$+INPMID$
  374.         EXIT IF LEN(a$)=567
  375.       LOOP
  376.       OUT 3,240  !Voice-Daten  VCED
  377.       OUT 3,67
  378.       OUT 3,32
  379.       OUT 3,0
  380.       OUT 3,247
  381.       DO
  382.         a$=a$+INPMID$
  383.         EXIT IF LEN(a$)=730
  384.       LOOP
  385.       FOR i%=1 TO 730
  386.         voice#(vn#,i%)=ASC(MID$(a$,i%,1))
  387.       NEXT i%
  388.       DEFTEXT 1,0,0,6
  389.       IF vn#<10
  390.         TEXT 5,40,"0"
  391.         TEXT 13,40,vn#
  392.       ELSE
  393.         TEXT 5,40,vn#
  394.       ENDIF
  395.       DEFTEXT 1,0,0,4
  396.       GOSUB list_voicename
  397.       IF MOUSEK>0
  398.         GOSUB list_algorithm
  399.         GOSUB list_lfo
  400.         GOSUB list_pitch_eg
  401.         GOSUB list_oscillator
  402.         GOSUB list_eg
  403.         GOSUB list_scaling_mode
  404.         GOSUB list_sensitivity
  405.         GOSUB list_pitch_bend
  406.         GOSUB list_portamento
  407.         GOSUB list_modulations_wheel
  408.         GOSUB list_foot_control
  409.         GOSUB list_breath_control
  410.         GOSUB list_aftertouch
  411.       ENDIF
  412.       EXIT IF INP?(2)
  413.     NEXT vn#
  414.   ausgang:
  415.     vn#=1
  416.     DEFTEXT 1,0,0,6
  417.     IF vn#<10
  418.       TEXT 5,40,"0"
  419.       TEXT 13,40,vn#
  420.     ELSE
  421.       TEXT 5,40,vn#
  422.     ENDIF
  423.     DEFTEXT 1,0,0,4
  424.   ENDIF
  425. RETURN
  426. > PROCEDURE list_voicename
  427.   CLR a$
  428.   FOR i%=719 TO 728
  429.     a$=a$+CHR$(voice#(vn#,i%))
  430.   NEXT i%
  431.   DEFTEXT 1,0,0,6
  432.   TEXT 130,40,a$                    ! Voicename
  433.   DEFTEXT 1,0,0,4
  434. RETURN
  435. > PROCEDURE list_algorithm
  436.   x#=129
  437.   TEXT x#,70,"  "
  438.   TEXT x#,70,voice#(vn#,708)+1              ! ALG
  439.   TEXT x#,82,voice#(vn#,709)                ! FBL
  440.   IF voice#(vn#,710)=1
  441.     a$="ON "
  442.   ELSE
  443.     a$="OFF"
  444.   ENDIF
  445.   TEXT x#,94,a$                    ! OSC.Sync
  446.   RESTORE transpose
  447.   FOR i%=0 TO voice#(vn#,718)
  448.     READ transposedata$
  449.   NEXT i%
  450.   TEXT x#,106,transposedata$       ! Transpose
  451.   IF voice#(vn#,532)=0
  452.     keymode$="Poly"
  453.   ELSE
  454.     keymode$="Mono"
  455.   ENDIF
  456.   TEXT x#,120,keymode$             ! Key Mode
  457. RETURN
  458. > PROCEDURE list_lfo
  459.   x#=104
  460.   RESTORE wave
  461.   FOR i%=0 TO voice#(vn#,716)
  462.     READ wavedata$
  463.   NEXT i%
  464.   TEXT x#,147,wavedata$            ! Wave
  465.   TEXT x#,161,"   "
  466.   TEXT x#,161,voice#(vn#,711)               ! Speed
  467.   TEXT x#,174,"   "
  468.   TEXT x#,174,voice#(vn#,712)               ! Delay
  469.   IF voice#(vn#,530)=0
  470.     a$="single"
  471.   ELSE
  472.     a$="multi "
  473.   ENDIF
  474.   TEXT x#,186,a$                   ! Mode
  475.   TEXT x#,198,"   "
  476.   TEXT x#,198,voice#(vn#,713)               ! Pmd
  477.   TEXT x#,211,"   "
  478.   TEXT x#,211,voice#(vn#,714)               ! Amd
  479.   IF voice#(vn#,715)=0
  480.     a$="OFF"
  481.   ELSE
  482.     a$="ON "
  483.   ENDIF
  484.   TEXT x#,224,a$                   ! Sync
  485. RETURN
  486. > PROCEDURE list_pitch_eg
  487.   x#=124
  488.   RESTORE rng
  489.   FOR i%=0 TO voice#(vn#,529)
  490.     READ rng$
  491.   NEXT i%
  492.   TEXT x#,250,rng$                 ! Range
  493.   IF voice#(vn#,531)=0
  494.     a$="OFF"
  495.   ELSE
  496.     a$="ON "
  497.   ENDIF
  498.   TEXT x#,262,a$                   ! Velocity
  499.   TEXT x#,275,"0"                  ! RS          ???
  500.   TEXT x#,288,"   "
  501.   TEXT x#,288,voice#(vn#,700)               ! R1
  502.   TEXT x#,300,"   "
  503.   TEXT x#,300,voice#(vn#,701)               ! R2
  504.   TEXT x#,312,"   "
  505.   TEXT x#,312,voice#(vn#,702)               ! R3
  506.   TEXT x#,324,"   "
  507.   TEXT x#,324,voice#(vn#,703)               ! R4
  508.   TEXT x#,336,"   "
  509.   TEXT x#,336,voice#(vn#,704)               ! L1
  510.   TEXT x#,349,"   "
  511.   TEXT x#,349,voice#(vn#,705)               ! L2
  512.   TEXT x#,362,"   "
  513.   TEXT x#,362,voice#(vn#,706)               ! L3
  514.   TEXT x#,374,"   "
  515.   TEXT x#,374,voice#(vn#,707)               ! L4
  516. RETURN
  517. > PROCEDURE list_oscillator
  518.   CLR op#
  519.   FOR x#=280 TO 445 STEP 33
  520.     IF voice#(vn#,696+op#)=0
  521.       a$="ratio"
  522.     ELSE
  523.       a$="fixed"
  524.     ENDIF
  525.     TEXT x#,70,a$                    ! Mode
  526.     IF voice#(vn#,696+op#)=0                  ! ratio
  527.       IF voice#(vn#,697+op#)=0
  528.         coarse#=0.5
  529.         ADD coarse#,voice#(vn#,698+op#)*0.005
  530.       ELSE
  531.         coarse#=voice#(vn#,697+op#)
  532.         ADD coarse#,voice#(vn#,698+op#)*(0.01*coarse#)
  533.       ENDIF
  534.       TEXT x#,82,"     "
  535.       TEXT x#,82,coarse#
  536.     ELSE
  537.       RESTORE fixed
  538.       FOR i%=0 TO voice#(vn#,698+op#)
  539.         READ fix#
  540.       NEXT i%
  541.       n%=voice#(vn#,697+op#)
  542.       DO
  543.         EXIT IF n%<4
  544.         SUB n%,4
  545.       LOOP
  546.       fixed#=0.1
  547.       FOR i%=0 TO n%
  548.         MUL fixed#,10
  549.       NEXT i%
  550.       fix#=fix#/(1000/fixed#)
  551.       ADD fixed#,fix#
  552.       TEXT x#,82,"     "
  553.       TEXT x#,82,fixed#
  554.     ENDIF
  555.     TEXT x#+1,94,"   "
  556.     TEXT x#+1,94,voice#(vn#,699+op#)-7             ! Detune
  557.     SUB op#,21
  558.   NEXT x#
  559. RETURN
  560. > PROCEDURE list_eg
  561.   CLR op#
  562.   FOR x#=280 TO 445 STEP 33
  563.     TEXT x#,120,"   "
  564.     TEXT x#,120,voice#(vn#,692+op#)     ! Rate scaling
  565.     TEXT x#,134,"   "
  566.     TEXT x#,134,voice#(vn#,679+op#)     ! Rate 1
  567.     TEXT x#,148,"   "
  568.     TEXT x#,148,voice#(vn#,680+op#)     ! Rate 2
  569.     TEXT x#,162,"   "
  570.     TEXT x#,162,voice#(vn#,681+op#)     ! Rate 3
  571.     TEXT x#,174,"   "
  572.     TEXT x#,174,voice#(vn#,682+op#)     ! Rate 4
  573.     TEXT x#,186,"   "
  574.     TEXT x#,186,voice#(vn#,683+op#)     ! Level 1
  575.     TEXT x#,198,"   "
  576.     TEXT x#,198,voice#(vn#,684+op#)     ! Level 2
  577.     TEXT x#,212,"   "
  578.     TEXT x#,212,voice#(vn#,685+op#)     ! Level 3
  579.     TEXT x#,224,"   "
  580.     TEXT x#,224,voice#(vn#,686+op#)     ! Level 4
  581.     SUB op#,21
  582.   NEXT x#
  583. RETURN
  584. > PROCEDURE list_scaling_mode
  585.   CLR op#
  586.   FOR x#=280 TO 445 STEP 33
  587.     IF voice#(vn#,522+(op#/21))=0
  588.       TEXT x#+3,256,"norm"         ! Scaling Mode
  589.     ELSE
  590.       TEXT x#+3,256,"frac"
  591.     ENDIF
  592.     TEXT x#,275,"   "
  593.     TEXT x#,275,voice#(vn#,695+op#)          ! Output Level
  594.     TEXT x#,288,"   "
  595.     TEXT x#,288,voice#(vn#,688+op#)          ! Ld
  596.     IF voice#(vn#,690+op#)=3
  597.       a$="+lin"
  598.     ENDIF
  599.     IF voice#(vn#,690+op#)=2
  600.       a$="+exp"
  601.     ENDIF
  602.     IF voice#(vn#,690+op#)=1
  603.       a$="-exp"
  604.     ENDIF
  605.     IF voice#(vn#,690+op#)=0
  606.       a$="-lin"
  607.     ENDIF
  608.     TEXT x#,300,"   "
  609.     TEXT x#,300,a$                 ! Lc
  610.     RESTORE bp
  611.     FOR i%=0 TO voice#(vn#,687+op#)
  612.       READ bp$
  613.     NEXT i%
  614.     TEXT x#,312,"   "
  615.     TEXT x#,312,bp$                ! Bp
  616.     IF voice#(vn#,691+op#)=3
  617.       a$="+lin"
  618.     ENDIF
  619.     IF voice#(vn#,691+op#)=2
  620.       a$="+exp"
  621.     ENDIF
  622.     IF voice#(vn#,691+op#)=1
  623.       a$="-exp"
  624.     ENDIF
  625.     IF voice#(vn#,691+op#)=0
  626.       a$="-lin"
  627.     ENDIF
  628.     TEXT x#,324,"   "
  629.     TEXT x#,324,a$                 ! Rc
  630.     TEXT x#,336,"   "
  631.     TEXT x#,336,voice#(vn#,689+op#)          ! Rd
  632.     SUB op#,21
  633.   NEXT x#
  634. RETURN
  635. > PROCEDURE list_sensitivity
  636.   CLR op#
  637.   FOR x#=280 TO 445 STEP 33
  638.     TEXT x#,362,"   "
  639.     TEXT x#,362,voice#(vn#,694+op#)    ! Velocity
  640.     TEXT x#,374,"   "
  641.     TEXT x#,374,voice#(vn#,528+(op#/21))    ! Ams
  642.     TEXT x#,386,"   "
  643.     TEXT x#,386,voice#(vn#,717)       ! Pms  (all OP's)
  644.     SUB op#,21
  645.   NEXT x#
  646. RETURN
  647. > PROCEDURE list_pitch_bend
  648.   x#=560
  649.   TEXT x#,70,"   "
  650.   TEXT x#,70,voice#(vn#,533)               ! Range
  651.   TEXT x#,82,"   "
  652.   TEXT x#,82,voice#(vn#,534)               ! Step
  653. RETURN
  654. > PROCEDURE list_portamento
  655.   x#=560
  656.   IF voice#(vn#,532)=0 AND voice#(vn#,537)=0
  657.     a$="Retrain  "
  658.   ENDIF
  659.   IF voice#(vn#,532)=0 AND voice#(vn#,537)=1
  660.     a$="Follow   "
  661.   ENDIF
  662.   IF voice#(vn#,532)=1 AND voice#(vn#,537)=1
  663.     a$="full time"
  664.   ENDIF
  665.   IF voice#(vn#,532)=1 AND voice#(vn#,537)=0
  666.     a$="fingered "
  667.   ENDIF
  668.   TEXT x#,108,"         "
  669.   TEXT x#,108,a$                   ! Portamento
  670.   TEXT x#,120,"         "
  671.   TEXT x#,120,voice#(vn#,538)               ! Step
  672.   TEXT x#,132,"         "
  673.   TEXT x#,132,voice#(vn#,539)               ! Time
  674.   TEXT x#+35,148,voice#(vn#,536)            ! Random Pitch
  675. RETURN
  676. > PROCEDURE list_modulations_wheel
  677.   x#=560
  678.   TEXT x#,174,"   "
  679.   TEXT x#,174,voice#(vn#,540)               ! Pmod
  680.   TEXT x#,186,"   "
  681.   TEXT x#,186,voice#(vn#,541)               ! Amod
  682.   TEXT x#,198,"   "
  683.   TEXT x#,198,voice#(vn#,542)               ! EG bias
  684. RETURN
  685. > PROCEDURE list_foot_control
  686.   x#=560
  687.   TEXT x#,224,"   "
  688.   TEXT x#,224,voice#(vn#,543)               ! Pmod
  689.   TEXT x#,238,"   "
  690.   TEXT x#,238,voice#(vn#,544)               ! Amod
  691.   TEXT x#,250,"   "
  692.   TEXT x#,250,voice#(vn#,545)               ! EG bias
  693.   TEXT x#,262,"   "
  694.   TEXT x#,262,voice#(vn#,546)               ! Volume
  695. RETURN
  696. > PROCEDURE list_breath_control
  697.   x#=560
  698.   TEXT x#,288,"   "
  699.   TEXT x#,288,voice#(vn#,547)               ! Pmod
  700.   TEXT x#,300,"   "
  701.   TEXT x#,300,voice#(vn#,548)               ! Amod
  702.   TEXT x#,312,"   "
  703.   TEXT x#,312,voice#(vn#,549)               ! EG bias
  704.   TEXT x#,324,"   "
  705.   TEXT x#,324,voice#(vn#,550)-50            ! P bias
  706. RETURN
  707. > PROCEDURE list_aftertouch
  708.   x#=560
  709.   TEXT x#,350,"   "
  710.   TEXT x#,350,voice#(vn#,551)               ! Pmod
  711.   TEXT x#,362,"   "
  712.   TEXT x#,362,voice#(vn#,552)               ! Amod
  713.   TEXT x#,374,"   "
  714.   TEXT x#,374,voice#(vn#,553)               ! EG bias
  715.   TEXT x#,386,"   "
  716.   TEXT x#,386,voice#(vn#,554)-50            ! P bias
  717. RETURN
  718. ' ---------------------------------VOICE-DATEN EMPFANGEN + LISTEN (ENDE)
  719. '
  720. ' ---------------------------------VOICE-DATEN EDITIEREN (ANFANG)
  721. > PROCEDURE voice_edit
  722.   PAUSE 10
  723.   ALERT 2," |  |  |Voice editieren    ",1," JA | NEIN ",dummy#
  724.   IF dummy#=2
  725.     GOTO zurueck
  726.   ENDIF
  727.   DO
  728.     EXIT IF MOUSEK=0
  729.   LOOP
  730.   p#=15
  731.   DO
  732.     GOSUB hilfe_test
  733.     GOSUB grafik_eg_test
  734.     IF MOUSEK
  735.       IF p#>0
  736.         SUB p#,0.5
  737.       ENDIF
  738.     ELSE
  739.       IF p#<15
  740.         ADD p#,0.5
  741.       ENDIF
  742.     ENDIF
  743.     CLR n%
  744.     m%=MOUSEK
  745.     IF m%=1 OR m%=2
  746.       IF m%=2
  747.         m%=-1
  748.       ENDIF
  749.       MOUSE x#,y#,k#
  750.       IF x#>30 AND x#<227 AND y#>32 AND y#<43
  751.         SGET screen$
  752.         DEFFILL 0
  753.         PBOX 34,46,221,65
  754.         BOX 34,46,221,65
  755.         DEFFILL 1
  756.         PRINT AT(6,4);
  757.         FORM INPUT 10,a$
  758.         FOR i%=719 TO 728
  759.           voice#(vn#,i%)=ASC(MID$(a$,i%-718,1))
  760.         NEXT i%
  761.         SPUT screen$
  762.         GOSUB list_voicename
  763.       ENDIF
  764.       IF x#>34 AND x#<155
  765.         ' ---------------------------
  766.         IF y#>61 AND y#<73
  767.           n%=708         !ALG
  768.           GOSUB algorithm
  769.         ENDIF
  770.         IF y#>73 AND y#<85
  771.           n%=709         !FBL
  772.           GOSUB algorithm
  773.         ENDIF
  774.         IF y#>85 AND y#<97
  775.           n%=710         !OSC.Sync         ALGORITHM
  776.           GOSUB algorithm
  777.         ENDIF
  778.         IF y#>97 AND y#<109
  779.           n%=718         !Transpose
  780.           GOSUB algorithm
  781.         ENDIF
  782.         IF y#>111 AND y#<123
  783.           n%=532         !Key Mode
  784.           GOSUB algorithm
  785.         ENDIF
  786.         ' ---------------------------
  787.         IF y#>137 AND y#<151
  788.           n%=716         !Wave
  789.           GOSUB lfo
  790.         ENDIF
  791.         IF y#>151 AND y#<165
  792.           n%=711         !Speed
  793.           GOSUB lfo
  794.         ENDIF
  795.         IF y#>165 AND y#<177
  796.           n%=712         !Delay
  797.           GOSUB lfo
  798.         ENDIF
  799.         IF y#>177 AND y#<189
  800.           n%=530         !Mode              L F O
  801.           GOSUB lfo
  802.         ENDIF
  803.         IF y#>189 AND y#<201
  804.           n%=713         !PMD
  805.           GOSUB lfo
  806.         ENDIF
  807.         IF y#>201 AND y#<215
  808.           n%=714         !AMD
  809.           GOSUB lfo
  810.         ENDIF
  811.         IF y#>215 AND y#<227
  812.           n%=715         !Sync
  813.           GOSUB lfo
  814.         ENDIF
  815.         ' ---------------------------
  816.         IF y#>241 AND y#<253
  817.           n%=529         !Range
  818.           GOSUB pitch_eg
  819.         ENDIF
  820.         IF y#>253 AND y#<265
  821.           n%=531         !Velocity
  822.           GOSUB pitch_eg
  823.         ENDIF
  824.         IF y#>279 AND y#<291
  825.           n%=700         !R1
  826.           GOSUB pitch_eg
  827.         ENDIF
  828.         IF y#>291 AND y#<303
  829.           n%=701         !R2
  830.           GOSUB pitch_eg
  831.         ENDIF
  832.         IF y#>303 AND y#<315
  833.           n%=702         !R3                PITCH_EG
  834.           GOSUB pitch_eg
  835.         ENDIF
  836.         IF y#>315 AND y#<327
  837.           n%=703         !R4
  838.           GOSUB pitch_eg
  839.         ENDIF
  840.         IF y#>327 AND y#<339
  841.           n%=704         !L1
  842.           GOSUB pitch_eg
  843.         ENDIF
  844.         IF y#>339 AND y#<353
  845.           n%=705         !L2
  846.           GOSUB pitch_eg
  847.         ENDIF
  848.         IF y#>353 AND y#<365
  849.           n%=706         !L3
  850.           GOSUB pitch_eg
  851.         ENDIF
  852.         IF y#>365 AND y#<377
  853.           n%=707         !L4
  854.           GOSUB pitch_eg
  855.         ENDIF
  856.         ' ---------------------------
  857.       ENDIF
  858.       IF x#>278 AND x#<311 ! OP1
  859.         op#=0
  860.       ENDIF
  861.       IF x#>311 AND x#<344 ! OP2
  862.         op#=21
  863.       ENDIF
  864.       IF x#>344 AND x#<377 ! OP3
  865.         op#=42
  866.       ENDIF
  867.       IF x#>377 AND x#<410 ! OP4
  868.         op#=63
  869.       ENDIF
  870.       IF x#>410 AND x#<443 ! OP5
  871.         op#=84
  872.       ENDIF
  873.       IF x#>443 AND x#<476 ! OP6
  874.         op#=105
  875.       ENDIF
  876.       IF x#>278 AND x#<476 !             ---- OP1-6 ----
  877.         ' ---------------------------
  878.         IF y#>61 AND y#<73
  879.           n%=696-op#      !Mode
  880.           GOSUB oscillator
  881.         ENDIF
  882.         IF y#>73 AND y#<85
  883.           n%=697-op#      !Coarse          OSCILLATOR
  884.           n1%=698-op#     !Fine
  885.           GOSUB oscillator
  886.         ENDIF
  887.         IF y#>85 AND y#<97
  888.           n%=699-op#      !Detune
  889.           GOSUB oscillator
  890.         ENDIF
  891.         ' ---------------------------
  892.         IF y#>111 AND y#<123
  893.           n%=692-op#      !RS
  894.           GOSUB eg
  895.         ENDIF
  896.         IF y#>123 AND y#<137
  897.           n%=679-op#      !R1
  898.           GOSUB eg
  899.         ENDIF
  900.         IF y#>137 AND y#<151
  901.           n%=680-op#      !R2
  902.           GOSUB eg
  903.         ENDIF
  904.         IF y#>151 AND y#<165
  905.           n%=681-op#      !R3
  906.           GOSUB eg
  907.         ENDIF
  908.         IF y#>165 AND y#<177
  909.           n%=682-op#      !R4              EG
  910.           GOSUB eg
  911.         ENDIF
  912.         IF y#>177 AND y#<189
  913.           n%=683-op#      !L1
  914.           GOSUB eg
  915.         ENDIF
  916.         IF y#>189 AND y#<201
  917.           n%=684-op#      !L2
  918.           GOSUB eg
  919.         ENDIF
  920.         IF y#>201 AND y#<215
  921.           n%=685-op#      !L3
  922.           GOSUB eg
  923.         ENDIF
  924.         IF y#>215 AND y#<227
  925.           n%=686-op#      !L4
  926.           GOSUB eg
  927.         ENDIF
  928.         ' ---------------------------
  929.         IF y#>241 AND y#<265
  930.           n%=522-(op#/21) !Scaling Mode
  931.           GOSUB output_level
  932.         ENDIF
  933.         IF y#>265 AND y#<279
  934.           n%=695-op#      !Output Level
  935.           GOSUB output_level
  936.         ENDIF
  937.         IF y#>279 AND y#<291
  938.           n%=688-op#      !LD
  939.           GOSUB output_level
  940.         ENDIF
  941.         IF y#>291 AND y#<303
  942.           n%=690-op#      !LC               OUTPUT_LEVEL
  943.           GOSUB output_level
  944.         ENDIF
  945.         IF y#>303 AND y#<315
  946.           n%=687-op#      !BP
  947.           GOSUB output_level
  948.         ENDIF
  949.         IF y#>315 AND y#<327
  950.           n%=691-op#      !RC
  951.           GOSUB output_level
  952.         ENDIF
  953.         IF y#>327 AND y#<339
  954.           n%=689-op#      !RD
  955.           GOSUB output_level
  956.         ENDIF
  957.         ' ---------------------------
  958.         IF y#>353 AND y#<365
  959.           n%=694-op#      !Velocity
  960.           GOSUB sensitivity
  961.         ENDIF
  962.         IF y#>365 AND y#<377
  963.           n%=528-(op#/21)      !AMS              SENSITIVITY
  964.           GOSUB sensitivity
  965.         ENDIF
  966.         IF y#>377 AND y#<389
  967.           n%=717         !PMS (all OP)
  968.           GOSUB sensitivity
  969.         ENDIF
  970.         ' ---------------------------
  971.       ENDIF
  972.       IF x#>478 AND x#<617
  973.         ' ---------------------------
  974.         IF y#>61 AND y#<73
  975.           n%=533         !Range
  976.           GOSUB pitch_bend
  977.         ENDIF
  978.         IF y#>73 AND y#<85 !                 PITCH_BEND
  979.           n%=534         !Step
  980.           GOSUB pitch_bend
  981.         ENDIF
  982.         ' ---------------------------
  983.         IF y#>99 AND y#<111
  984.           n%=537         !Mode
  985.           GOSUB portamento
  986.         ENDIF
  987.         IF y#>111 AND y#<123
  988.           n%=538         !Step             PORTAMENTO
  989.           GOSUB portamento
  990.         ENDIF
  991.         IF y#>123 AND y#<137
  992.           n%=539         !Time
  993.           GOSUB portamento
  994.         ENDIF
  995.         IF y#>137 AND y#<151
  996.           n%=536         !Random Pitch
  997.           GOSUB portamento
  998.         ENDIF
  999.         ' ---------------------------
  1000.         IF y#>165 AND y#<177
  1001.           n%=540         !P.Mode
  1002.           GOSUB modulation_wheel
  1003.         ENDIF
  1004.         IF y#>177 AND y#<189
  1005.           n%=541         !A.Mode           MODULATION_WHEEL
  1006.           GOSUB modulation_wheel
  1007.         ENDIF
  1008.         IF y#>189 AND y#<201
  1009.           n%=542         !EG.Bias
  1010.           GOSUB modulation_wheel
  1011.         ENDIF
  1012.         ' ---------------------------
  1013.         IF y#>215 AND y#<227
  1014.           n%=543         !P.Mode
  1015.           GOSUB foot_control
  1016.         ENDIF
  1017.         IF y#>227 AND y#<241
  1018.           n%=544         !A.Mode           FOOT_CONTROL
  1019.           GOSUB foot_control
  1020.         ENDIF
  1021.         IF y#>241 AND y#<253
  1022.           n%=545         !EG.Bias
  1023.           GOSUB foot_control
  1024.         ENDIF
  1025.         IF y#>253 AND y#<265
  1026.           n%=546         !Volume
  1027.           GOSUB foot_control
  1028.         ENDIF
  1029.         ' ---------------------------
  1030.         IF y#>279 AND y#<291
  1031.           n%=547         !P.Mode
  1032.           GOSUB breath_control
  1033.         ENDIF
  1034.         IF y#>291 AND y#<303
  1035.           n%=548         !A.Mode           BREATH_CONTROL
  1036.           GOSUB breath_control
  1037.         ENDIF
  1038.         IF y#>303 AND y#<315
  1039.           n%=549         !EG Bias
  1040.           GOSUB breath_control
  1041.         ENDIF
  1042.         IF y#>315 AND y#<327
  1043.           n%=550         !P.Bias
  1044.           GOSUB breath_control
  1045.         ENDIF
  1046.         ' ---------------------------
  1047.         IF y#>341 AND y#<353
  1048.           n%=551         !P.Mode
  1049.           GOSUB after_touch
  1050.         ENDIF
  1051.         IF y#>353 AND y#<365
  1052.           n%=552         !A.Mode           AFTER_TOUCH
  1053.           GOSUB after_touch
  1054.         ENDIF
  1055.         IF y#>365 AND y#<377
  1056.           n%=553         !EG Bias
  1057.           GOSUB after_touch
  1058.         ENDIF
  1059.         IF y#>377 AND y#<389
  1060.           n%=554         !P.Bias
  1061.           GOSUB after_touch
  1062.         ENDIF
  1063.         ' ---------------------------
  1064.       ENDIF
  1065.     ENDIF
  1066.     IF MOUSEY>398
  1067.       GOSUB tastatur
  1068.     ENDIF
  1069.     EXIT IF MOUSEY<24 OR MOUSEX<24  ! = Menue-Anwahl
  1070.   LOOP
  1071. zurueck:
  1072. RETURN
  1073. > PROCEDURE algorithm
  1074.   IF n%=708              !ALG
  1075.     ADD voice#(vn#,n%),m%
  1076.     IF voice#(vn#,n%)<0
  1077.       voice#(vn#,n%)=0
  1078.     ENDIF
  1079.     IF voice#(vn#,n%)>31
  1080.       voice#(vn#,n%)=31
  1081.     ENDIF
  1082.     TEXT 129,70,"  "
  1083.     TEXT 129,70,voice#(vn#,n%)+1
  1084.   ENDIF
  1085.   IF n%=709              !FBL
  1086.     ADD voice#(vn#,n%),m%
  1087.     IF voice#(vn#,n%)<0
  1088.       voice#(vn#,n%)=0
  1089.     ENDIF
  1090.     IF voice#(vn#,n%)>7
  1091.       voice#(vn#,n%)=7
  1092.     ENDIF
  1093.     TEXT 129,82,voice#(vn#,n%)
  1094.   ENDIF
  1095.   IF n%=710  !OSC.Sync
  1096.     IF voice#(vn#,n%)=1
  1097.       voice#(vn#,n%)=0
  1098.       TEXT 129,94,"OFF"
  1099.     ELSE
  1100.       voice#(vn#,n%)=1
  1101.       TEXT 129,94,"ON "
  1102.     ENDIF
  1103.     DO
  1104.       EXIT IF MOUSEK=0
  1105.     LOOP
  1106.   ENDIF
  1107.   IF n%=718  !Transpose
  1108.     ADD voice#(vn#,n%),m%
  1109.     IF voice#(vn#,n%)<0
  1110.       voice#(vn#,n%)=0
  1111.     ENDIF
  1112.     IF voice#(vn#,n%)>48
  1113.       voice#(vn#,n%)=48
  1114.     ENDIF
  1115.     RESTORE transpose
  1116.     FOR i%=0 TO voice#(vn#,n%)
  1117.       READ transposedata$
  1118.     NEXT i%
  1119.     TEXT 129,106,transposedata$
  1120.   ENDIF
  1121.   IF n%=532  !Key Mode
  1122.     IF voice#(vn#,n%)=1
  1123.       voice#(vn#,n%)=0
  1124.       TEXT 129,120,"Poly"
  1125.       IF voice#(vn#,537)=0
  1126.         TEXT 560,108,"Retrain  "
  1127.       ELSE
  1128.         TEXT 560,108,"Follow   "
  1129.       ENDIF
  1130.     ELSE
  1131.       voice#(vn#,n%)=1
  1132.       TEXT 129,120,"Mono"
  1133.       IF voice#(vn#,537)=0
  1134.         TEXT 560,108,"full time"
  1135.       ELSE
  1136.         TEXT 560,108,"fingered "
  1137.       ENDIF
  1138.     ENDIF
  1139.     DO
  1140.       EXIT IF MOUSEK=0
  1141.     LOOP
  1142.   ENDIF
  1143.   SHOWM
  1144.   PAUSE p#
  1145. RETURN
  1146. > PROCEDURE lfo
  1147.   IF n%=716          !Wave
  1148.     ADD voice#(vn#,n%),m%
  1149.     IF voice#(vn#,n%)<0
  1150.       voice#(vn#,n%)=0
  1151.     ENDIF
  1152.     IF voice#(vn#,n%)>5
  1153.       voice#(vn#,n%)=5
  1154.     ENDIF
  1155.     RESTORE wave
  1156.     FOR i%=0 TO voice#(vn#,n%)
  1157.       READ wavedata$
  1158.     NEXT i%
  1159.     TEXT 104,147,wavedata$
  1160.   ENDIF
  1161.   IF n%=711          !Speed
  1162.     ADD voice#(vn#,n%),m%
  1163.     IF voice#(vn#,n%)<0
  1164.       voice#(vn#,n%)=0
  1165.     ENDIF
  1166.     IF voice#(vn#,n%)>99
  1167.       voice#(vn#,n%)=99
  1168.     ENDIF
  1169.     TEXT 104,161,"  "
  1170.     TEXT 104,161,voice#(vn#,n%)
  1171.   ENDIF
  1172.   IF n%=712          !Delay
  1173.     ADD voice#(vn#,n%),m%
  1174.     IF voice#(vn#,n%)<0
  1175.       voice#(vn#,n%)=0
  1176.     ENDIF
  1177.     IF voice#(vn#,n%)>99
  1178.       voice#(vn#,n%)=99
  1179.     ENDIF
  1180.     TEXT 104,174,"  "
  1181.     TEXT 104,174,voice#(vn#,n%)
  1182.   ENDIF
  1183.   IF n%=530          !Mode
  1184.     IF voice#(vn#,n%)=1
  1185.       voice#(vn#,n%)=0
  1186.       TEXT 104,186,"single"
  1187.     ELSE
  1188.       voice#(vn#,n%)=1
  1189.       TEXT 104,186,"multi "
  1190.     ENDIF
  1191.     DO
  1192.       EXIT IF MOUSEK=0
  1193.     LOOP
  1194.   ENDIF
  1195.   IF n%=713          !PMD
  1196.     ADD voice#(vn#,n%),m%
  1197.     IF voice#(vn#,n%)<0
  1198.       voice#(vn#,n%)=0
  1199.     ENDIF
  1200.     IF voice#(vn#,n%)>99
  1201.       voice#(vn#,n%)=99
  1202.     ENDIF
  1203.     TEXT 104,198,"  "
  1204.     TEXT 104,198,voice#(vn#,n%)
  1205.   ENDIF
  1206.   IF n%=714          !AMD
  1207.     ADD voice#(vn#,n%),m%
  1208.     IF voice#(vn#,n%)<0
  1209.       voice#(vn#,n%)=0
  1210.     ENDIF
  1211.     IF voice#(vn#,n%)>99
  1212.       voice#(vn#,n%)=99
  1213.     ENDIF
  1214.     TEXT 104,211,"  "
  1215.     TEXT 104,211,voice#(vn#,n%)
  1216.   ENDIF
  1217.   IF n%=715          !Sync
  1218.     IF voice#(vn#,n%)=1
  1219.       voice#(vn#,n%)=0
  1220.       TEXT 104,224,"OFF"
  1221.     ELSE
  1222.       voice#(vn#,n%)=1
  1223.       TEXT 104,224,"ON "
  1224.     ENDIF
  1225.     DO
  1226.       EXIT IF MOUSEK=0
  1227.     LOOP
  1228.   ENDIF
  1229.   SHOWM
  1230.   PAUSE p#
  1231. RETURN
  1232. PROCEDURE pitch_eg
  1233.   IF n%=529          !Range
  1234.     ADD voice#(vn#,n%),m%
  1235.     IF voice#(vn#,n%)<0
  1236.       voice#(vn#,n%)=0
  1237.     ENDIF
  1238.     IF voice#(vn#,n%)>3
  1239.       voice#(vn#,n%)=3
  1240.     ENDIF
  1241.     RESTORE rng
  1242.     FOR i%=0 TO voice#(vn#,n%)
  1243.       READ rng$
  1244.     NEXT i%
  1245.     TEXT 124,250,rng$
  1246.   ENDIF
  1247.   IF n%=531          !Velocity
  1248.     IF voice#(vn#,n%)=1
  1249.       voice#(vn#,n%)=0
  1250.       TEXT 124,262,"OFF"
  1251.     ELSE
  1252.       voice#(vn#,n%)=1
  1253.       TEXT 124,262,"ON "
  1254.     ENDIF
  1255.     DO
  1256.       EXIT IF MOUSEK=0
  1257.     LOOP
  1258.   ENDIF
  1259.   '                  !RS bleibt immer Null
  1260.   IF n%=700          !R1
  1261.     ADD voice#(vn#,n%),m%
  1262.     IF voice#(vn#,n%)<0
  1263.       voice#(vn#,n%)=0
  1264.     ENDIF
  1265.     IF voice#(vn#,n%)>99
  1266.       voice#(vn#,n%)=99
  1267.     ENDIF
  1268.     TEXT 124,288,"  "
  1269.     TEXT 124,288,voice#(vn#,n%)
  1270.   ENDIF
  1271.   IF n%=701          !R2
  1272.     ADD voice#(vn#,n%),m%
  1273.     IF voice#(vn#,n%)<0
  1274.       voice#(vn#,n%)=0
  1275.     ENDIF
  1276.     IF voice#(vn#,n%)>99
  1277.       voice#(vn#,n%)=99
  1278.     ENDIF
  1279.     TEXT 124,300,"  "
  1280.     TEXT 124,300,voice#(vn#,n%)
  1281.   ENDIF
  1282.   IF n%=702          !R3
  1283.     ADD voice#(vn#,n%),m%
  1284.     IF voice#(vn#,n%)<0
  1285.       voice#(vn#,n%)=0
  1286.     ENDIF
  1287.     IF voice#(vn#,n%)>99
  1288.       voice#(vn#,n%)=99
  1289.     ENDIF
  1290.     TEXT 124,312,"  "
  1291.     TEXT 124,312,voice#(vn#,n%)
  1292.   ENDIF
  1293.   IF n%=703          !R4
  1294.     ADD voice#(vn#,n%),m%
  1295.     IF voice#(vn#,n%)<0
  1296.       voice#(vn#,n%)=0
  1297.     ENDIF
  1298.     IF voice#(vn#,n%)>99
  1299.       voice#(vn#,n%)=99
  1300.     ENDIF
  1301.     TEXT 124,324,"  "
  1302.     TEXT 124,324,voice#(vn#,n%)
  1303.   ENDIF
  1304.   IF n%=704          !L1
  1305.     ADD voice#(vn#,n%),m%
  1306.     IF voice#(vn#,n%)<0
  1307.       voice#(vn#,n%)=0
  1308.     ENDIF
  1309.     IF voice#(vn#,n%)>99
  1310.       voice#(vn#,n%)=99
  1311.     ENDIF
  1312.     TEXT 124,336,"  "
  1313.     TEXT 124,336,voice#(vn#,n%)
  1314.   ENDIF
  1315.   IF n%=705          !L2
  1316.     ADD voice#(vn#,n%),m%
  1317.     IF voice#(vn#,n%)<0
  1318.       voice#(vn#,n%)=0
  1319.     ENDIF
  1320.     IF voice#(vn#,n%)>99
  1321.       voice#(vn#,n%)=99
  1322.     ENDIF
  1323.     TEXT 124,349,"  "
  1324.     TEXT 124,349,voice#(vn#,n%)
  1325.   ENDIF
  1326.   IF n%=706          !L3
  1327.     ADD voice#(vn#,n%),m%
  1328.     IF voice#(vn#,n%)<0
  1329.       voice#(vn#,n%)=0
  1330.     ENDIF
  1331.     IF voice#(vn#,n%)>99
  1332.       voice#(vn#,n%)=99
  1333.     ENDIF
  1334.     TEXT 124,362,"  "
  1335.     TEXT 124,362,voice#(vn#,n%)
  1336.   ENDIF
  1337.   IF n%=707          !L4
  1338.     ADD voice#(vn#,n%),m%
  1339.     IF voice#(vn#,n%)<0
  1340.       voice#(vn#,n%)=0
  1341.     ENDIF
  1342.     IF voice#(vn#,n%)>99
  1343.       voice#(vn#,n%)=99
  1344.     ENDIF
  1345.     TEXT 124,374,"  "
  1346.     TEXT 124,374,voice#(vn#,n%)
  1347.   ENDIF
  1348.   PBOX 35,280,119,376
  1349.   p1x#=0              ! R4
  1350.   p2x#=100-voice#(vn#,700)     ! R1
  1351.   p3x#=100-voice#(vn#,701)+p2x# ! R2
  1352.   p4x#=100-voice#(vn#,702)+p3x# ! R3
  1353.   p1y#=voice#(vn#,707)         ! L4
  1354.   p2y#=voice#(vn#,704)         ! L1
  1355.   p3y#=voice#(vn#,705)         ! L2
  1356.   p4y#=voice#(vn#,706)         ! L3
  1357.   '
  1358.   DIV p1x#,5
  1359.   DIV p2x#,5
  1360.   DIV p3x#,5
  1361.   DIV p4x#,5
  1362.   DIV p1y#,5
  1363.   DIV p2y#,5
  1364.   DIV p3y#,5
  1365.   DIV p4y#,5
  1366.   '
  1367.   ADD p1x#,40
  1368.   ADD p2x#,40
  1369.   ADD p3x#,40
  1370.   ADD p4x#,40
  1371.   p1y#=330-p1y#
  1372.   p2y#=330-p2y#
  1373.   p3y#=330-p3y#
  1374.   p4y#=330-p4y#
  1375.   '
  1376.   COLOR 0
  1377.   DRAW p1x#-5,320 TO 116,320
  1378.   DRAW p1x#,p1y# TO p2x#,p2y# TO p3x#,p3y# TO p4x#,p4y# TO p4x#+15,p4y#
  1379.   DEFLINE ,,,1
  1380.   DRAW p1x#,339 TO p1x#,331
  1381.   DRAW p4x#+10,339 TO p4x#+10,331
  1382.   COLOR 1
  1383.   GRAPHMODE 3
  1384.   TEXT p1x#-4,315,"+"
  1385.   TEXT p1x#-5,328,"-"
  1386.   TEXT 60,365,"KEY"
  1387.   TEXT p1x#-4,347,"ON"
  1388.   TEXT p4x#,356,"OFF"
  1389.   DEFLINE ,,0,0
  1390.   GRAPHMODE 1
  1391.   EVERY 1000 GOSUB test_mk
  1392.   SHOWM
  1393.   PAUSE p#
  1394. RETURN
  1395. PROCEDURE test_mk
  1396.   IF MOUSEK=0 AND hilfe$="aus"
  1397.     COLOR 1
  1398.     EVERY STOP
  1399.     PUT 35,280,pitch_eg$
  1400.     SHOWM
  1401.   ENDIF
  1402. RETURN
  1403. > PROCEDURE oscillator
  1404.   IF op#=0
  1405.     xpos#=280
  1406.   ENDIF
  1407.   IF op#=21
  1408.     xpos#=313
  1409.   ENDIF
  1410.   IF op#=42
  1411.     xpos#=346
  1412.   ENDIF
  1413.   IF op#=63
  1414.     xpos#=379
  1415.   ENDIF
  1416.   IF op#=84
  1417.     xpos#=412
  1418.   ENDIF
  1419.   IF op#=105
  1420.     xpos#=445
  1421.   ENDIF
  1422.   IF n%=696-op#      !Mode
  1423.     IF voice#(vn#,n%)=1
  1424.       voice#(vn#,n%)=0
  1425.       TEXT xpos#,70,"ratio"
  1426.       IF voice#(vn#,696-op#)=0                  ! ratio
  1427.         IF voice#(vn#,697-op#)=0
  1428.           coarse#=0.5
  1429.           ADD coarse#,voice#(vn#,698-op#)*0.005
  1430.         ELSE
  1431.           coarse#=voice#(vn#,697-op#)
  1432.           ADD coarse#,voice#(vn#,698-op#)*(0.01*coarse#)
  1433.         ENDIF
  1434.         TEXT xpos#,82,"     "
  1435.         TEXT xpos#,82,coarse#
  1436.       ELSE
  1437.         RESTORE fixed
  1438.         FOR i%=0 TO voice#(vn#,698-op#)
  1439.           READ fix#
  1440.         NEXT i%
  1441.         n%=voice#(vn#,697-op#)
  1442.         DO
  1443.           EXIT IF n%<4
  1444.           SUB n%,4
  1445.         LOOP
  1446.         fixed#=0.1
  1447.         FOR i%=0 TO n%
  1448.           MUL fixed#,10
  1449.         NEXT i%
  1450.         fix#=fix#/(1000/fixed#)
  1451.         ADD fixed#,fix#
  1452.         TEXT xpos#,82,"     "
  1453.         TEXT xpos#,82,fixed#
  1454.       ENDIF
  1455.     ELSE
  1456.       IF voice#(vn#,697-op#)>3
  1457.         voice#(vn#,697-op#)=3
  1458.       ENDIF
  1459.       voice#(vn#,n%)=1
  1460.       TEXT xpos#,70,"fixed"
  1461.       IF voice#(vn#,696-op#)=0                  ! ratio
  1462.         IF voice#(vn#,697-op#)=0
  1463.           coarse#=0.5
  1464.           ADD coarse#,voice#(vn#,698-op#)*0.005
  1465.         ELSE
  1466.           coarse#=voice#(vn#,697-op#)
  1467.           ADD coarse#,voice#(vn#,698-op#)*(0.01*coarse#)
  1468.         ENDIF
  1469.         TEXT xpos#,82,"     "
  1470.         TEXT xpos#,82,coarse#
  1471.       ELSE
  1472.         RESTORE fixed
  1473.         FOR i%=0 TO voice#(vn#,698-op#)
  1474.           READ fix#
  1475.         NEXT i%
  1476.         n%=voice#(vn#,697-op#)
  1477.         DO
  1478.           EXIT IF n%<4
  1479.           SUB n%,4
  1480.         LOOP
  1481.         fixed#=0.1
  1482.         FOR i%=0 TO n%
  1483.           MUL fixed#,10
  1484.         NEXT i%
  1485.         fix#=fix#/(1000/fixed#)
  1486.         ADD fixed#,fix#
  1487.         TEXT xpos#,82,"     "
  1488.         TEXT xpos#,82,fixed#
  1489.       ENDIF
  1490.     ENDIF
  1491.     DO
  1492.       EXIT IF MOUSEK=0
  1493.     LOOP
  1494.   ENDIF
  1495.   IF n%=697-op#      !Coarse
  1496.     n1%=698-op#      !fine
  1497.     IF voice#(vn#,696-op#)=0 AND MOUSEX<=(xpos#+15) !ratio
  1498.       ADD voice#(vn#,n%),m%
  1499.       IF voice#(vn#,n%)<0
  1500.         voice#(vn#,n%)=0
  1501.       ENDIF
  1502.       IF voice#(vn#,n%)>31
  1503.         voice#(vn#,n%)=31
  1504.       ENDIF
  1505.     ENDIF
  1506.     IF voice#(vn#,696-op#)=1 AND MOUSEX<=(xpos#+15) !fixed
  1507.       ADD voice#(vn#,n%),m%
  1508.       IF voice#(vn#,n%)<0
  1509.         voice#(vn#,n%)=0
  1510.       ENDIF
  1511.       IF voice#(vn#,n%)>3
  1512.         voice#(vn#,n%)=3
  1513.       ENDIF
  1514.     ENDIF
  1515.     IF voice#(vn#,696-op#)=0 AND MOUSEX>(xpos#+15) !ratio
  1516.       ADD voice#(vn#,n1%),m%
  1517.       IF voice#(vn#,n1%)<0
  1518.         voice#(vn#,n1%)=0
  1519.       ENDIF
  1520.       IF voice#(vn#,n1%)>99
  1521.         voice#(vn#,n1%)=99
  1522.       ENDIF
  1523.     ENDIF
  1524.     IF voice#(vn#,696-op#)=1 AND MOUSEX>(xpos#+15) !fixed
  1525.       ADD voice#(vn#,n1%),m%
  1526.       IF voice#(vn#,n1%)<0
  1527.         voice#(vn#,n1%)=0
  1528.       ENDIF
  1529.       IF voice#(vn#,n1%)>99
  1530.         voice#(vn#,n1%)=99
  1531.       ENDIF
  1532.     ENDIF
  1533.     IF voice#(vn#,696-op#)=0                  ! ratio
  1534.       IF voice#(vn#,697-op#)=0
  1535.         coarse#=0.5
  1536.         ADD coarse#,voice#(vn#,698-op#)*0.005
  1537.       ELSE
  1538.         coarse#=voice#(vn#,697-op#)
  1539.         ADD coarse#,voice#(vn#,698-op#)*(0.01*coarse#)
  1540.       ENDIF
  1541.       TEXT xpos#,82,"     "
  1542.       TEXT xpos#,82,coarse#
  1543.     ELSE
  1544.       RESTORE fixed
  1545.       FOR i%=0 TO voice#(vn#,698-op#)
  1546.         READ fix#
  1547.       NEXT i%
  1548.       n%=voice#(vn#,697-op#)
  1549.       DO
  1550.         EXIT IF n%<4
  1551.         SUB n%,4
  1552.       LOOP
  1553.       fixed#=0.1
  1554.       FOR i%=0 TO n%
  1555.         MUL fixed#,10
  1556.       NEXT i%
  1557.       fix#=fix#/(1000/fixed#)
  1558.       ADD fixed#,fix#
  1559.       TEXT xpos#,82,"     "
  1560.       TEXT xpos#,82,fixed#
  1561.     ENDIF
  1562.   ENDIF
  1563.   IF n%=699-op#      !Detune (OP1)
  1564.     ADD voice#(vn#,n%),m%
  1565.     IF voice#(vn#,n%)<0
  1566.       voice#(vn#,n%)=0
  1567.     ENDIF
  1568.     IF voice#(vn#,n%)>14
  1569.       voice#(vn#,n%)=14
  1570.     ENDIF
  1571.     TEXT xpos#+1,94,"   "
  1572.     TEXT xpos#+1,94,voice#(vn#,699-op#)-7
  1573.   ENDIF
  1574.   SHOWM
  1575.   PAUSE p#
  1576. RETURN
  1577. > PROCEDURE eg
  1578.   IF op#=0
  1579.     xpos#=280
  1580.   ENDIF
  1581.   IF op#=21
  1582.     xpos#=313
  1583.   ENDIF
  1584.   IF op#=42
  1585.     xpos#=346
  1586.   ENDIF
  1587.   IF op#=63
  1588.     xpos#=379
  1589.   ENDIF
  1590.   IF op#=84
  1591.     xpos#=412
  1592.   ENDIF
  1593.   IF op#=105
  1594.     xpos#=445
  1595.   ENDIF
  1596.   IF n%=692-op#      !RS     (OP1)
  1597.     ADD voice#(vn#,n%),m%
  1598.     IF voice#(vn#,n%)<0
  1599.       voice#(vn#,n%)=0
  1600.     ENDIF
  1601.     IF voice#(vn#,n%)>7
  1602.       voice#(vn#,n%)=7
  1603.     ENDIF
  1604.     TEXT xpos#,120,"   "
  1605.     TEXT xpos#,120,voice#(vn#,n%)
  1606.   ENDIF
  1607.   IF n%=679-op#      !R1     (OP1)
  1608.     ADD voice#(vn#,n%),m%
  1609.     IF voice#(vn#,n%)<0
  1610.       voice#(vn#,n%)=0
  1611.     ENDIF
  1612.     IF voice#(vn#,n%)>99
  1613.       voice#(vn#,n%)=99
  1614.     ENDIF
  1615.     TEXT xpos#,134,"   "
  1616.     TEXT xpos#,134,voice#(vn#,n%)
  1617.   ENDIF
  1618.   IF n%=680-op#      !R2     (OP1)
  1619.     ADD voice#(vn#,n%),m%
  1620.     IF voice#(vn#,n%)<0
  1621.       voice#(vn#,n%)=0
  1622.     ENDIF
  1623.     IF voice#(vn#,n%)>99
  1624.       voice#(vn#,n%)=99
  1625.     ENDIF
  1626.     TEXT xpos#,148,"   "
  1627.     TEXT xpos#,148,voice#(vn#,n%)
  1628.   ENDIF
  1629.   IF n%=681-op#      !R3     (OP1)
  1630.     ADD voice#(vn#,n%),m%
  1631.     IF voice#(vn#,n%)<0
  1632.       voice#(vn#,n%)=0
  1633.     ENDIF
  1634.     IF voice#(vn#,n%)>99
  1635.       voice#(vn#,n%)=99
  1636.     ENDIF
  1637.     TEXT xpos#,162,"   "
  1638.     TEXT xpos#,162,voice#(vn#,n%)
  1639.   ENDIF
  1640.   IF n%=682-op#      !R4     (OP1)
  1641.     ADD voice#(vn#,n%),m%
  1642.     IF voice#(vn#,n%)<0
  1643.       voice#(vn#,n%)=0
  1644.     ENDIF
  1645.     IF voice#(vn#,n%)>99
  1646.       voice#(vn#,n%)=99
  1647.     ENDIF
  1648.     TEXT xpos#,174,"   "
  1649.     TEXT xpos#,174,voice#(vn#,n%)
  1650.   ENDIF
  1651.   IF n%=683-op#      !L1     (OP1)
  1652.     ADD voice#(vn#,n%),m%
  1653.     IF voice#(vn#,n%)<0
  1654.       voice#(vn#,n%)=0
  1655.     ENDIF
  1656.     IF voice#(vn#,n%)>99
  1657.       voice#(vn#,n%)=99
  1658.     ENDIF
  1659.     TEXT xpos#,186,"   "
  1660.     TEXT xpos#,186,voice#(vn#,n%)
  1661.   ENDIF
  1662.   IF n%=684-op#      !L2     (OP1)
  1663.     ADD voice#(vn#,n%),m%
  1664.     IF voice#(vn#,n%)<0
  1665.       voice#(vn#,n%)=0
  1666.     ENDIF
  1667.     IF voice#(vn#,n%)>99
  1668.       voice#(vn#,n%)=99
  1669.     ENDIF
  1670.     TEXT xpos#,198,"   "
  1671.     TEXT xpos#,198,voice#(vn#,n%)
  1672.   ENDIF
  1673.   IF n%=685-op#      !L3     (OP1)
  1674.     ADD voice#(vn#,n%),m%
  1675.     IF voice#(vn#,n%)<0
  1676.       voice#(vn#,n%)=0
  1677.     ENDIF
  1678.     IF voice#(vn#,n%)>99
  1679.       voice#(vn#,n%)=99
  1680.     ENDIF
  1681.     TEXT xpos#,212,"   "
  1682.     TEXT xpos#,212,voice#(vn#,n%)
  1683.   ENDIF
  1684.   IF n%=686-op#      !L4     (OP1)
  1685.     ADD voice#(vn#,n%),m%
  1686.     IF voice#(vn#,n%)<0
  1687.       voice#(vn#,n%)=0
  1688.     ENDIF
  1689.     IF voice#(vn#,n%)>99
  1690.       voice#(vn#,n%)=99
  1691.     ENDIF
  1692.     TEXT xpos#,224,"   "
  1693.     TEXT xpos#,224,voice#(vn#,n%)
  1694.   ENDIF
  1695.   SHOWM
  1696.   PAUSE p#
  1697. RETURN
  1698. > PROCEDURE output_level
  1699.   IF op#=0
  1700.     xpos#=280
  1701.   ENDIF
  1702.   IF op#=21
  1703.     xpos#=313
  1704.   ENDIF
  1705.   IF op#=42
  1706.     xpos#=346
  1707.   ENDIF
  1708.   IF op#=63
  1709.     xpos#=379
  1710.   ENDIF
  1711.   IF op#=84
  1712.     xpos#=412
  1713.   ENDIF
  1714.   IF op#=105
  1715.     xpos#=445
  1716.   ENDIF
  1717.   '
  1718.   IF n%=522-(op#/21) !Scaling Mode (OP1)
  1719.     voice#(vn#,n%)=0
  1720.     TEXT xpos#+3,256,"norm"
  1721.     ' Standardwert: bleibt unverändert
  1722.   ENDIF
  1723.   '
  1724.   IF n%=695-op#      !Output Level (OP1)
  1725.     ADD voice#(vn#,n%),m%
  1726.     IF voice#(vn#,n%)<0
  1727.       voice#(vn#,n%)=0
  1728.     ENDIF
  1729.     IF voice#(vn#,n%)>99
  1730.       voice#(vn#,n%)=99
  1731.     ENDIF
  1732.     TEXT xpos#,275,"   "
  1733.     TEXT xpos#,275,voice#(vn#,n%)
  1734.   ENDIF
  1735.   '
  1736.   IF n%=688-op#      !LD           (OP1)
  1737.     ADD voice#(vn#,n%),m%
  1738.     IF voice#(vn#,n%)<0
  1739.       voice#(vn#,n%)=0
  1740.     ENDIF
  1741.     IF voice#(vn#,n%)>99
  1742.       voice#(vn#,n%)=99
  1743.     ENDIF
  1744.     TEXT xpos#,288,"   "
  1745.     TEXT xpos#,288,voice#(vn#,n%)
  1746.   ENDIF
  1747.   '
  1748.   IF n%=690-op#      !LC           (OP1)
  1749.     ADD voice#(vn#,n%),m%
  1750.     IF voice#(vn#,n%)<0
  1751.       voice#(vn#,n%)=0
  1752.     ENDIF
  1753.     IF voice#(vn#,n%)>3
  1754.       voice#(vn#,n%)=3
  1755.     ENDIF
  1756.     IF voice#(vn#,690-op#)=3
  1757.       a$="+lin"
  1758.     ENDIF
  1759.     IF voice#(vn#,690-op#)=2
  1760.       a$="+exp"
  1761.     ENDIF
  1762.     IF voice#(vn#,690-op#)=1
  1763.       a$="-exp"
  1764.     ENDIF
  1765.     IF voice#(vn#,690-op#)=0
  1766.       a$="-lin"
  1767.     ENDIF
  1768.     TEXT xpos#,300,"   "
  1769.     TEXT xpos#,300,a$
  1770.   ENDIF
  1771.   '
  1772.   IF n%=687-op#      !BP           (OP1)
  1773.     ADD voice#(vn#,n%),m%
  1774.     IF voice#(vn#,n%)<0
  1775.       voice#(vn#,n%)=0
  1776.     ENDIF
  1777.     IF voice#(vn#,n%)>99
  1778.       voice#(vn#,n%)=99
  1779.     ENDIF
  1780.     RESTORE bp
  1781.     FOR i%=0 TO voice#(vn#,687-op#)
  1782.       READ bp$
  1783.     NEXT i%
  1784.     TEXT xpos#,312,"   "
  1785.     TEXT xpos#,312,bp$
  1786.   ENDIF
  1787.   '
  1788.   IF n%=691-op#      !RC           (OP1)
  1789.     ADD voice#(vn#,n%),m%
  1790.     IF voice#(vn#,n%)<0
  1791.       voice#(vn#,n%)=0
  1792.     ENDIF
  1793.     IF voice#(vn#,n%)>3
  1794.       voice#(vn#,n%)=3
  1795.     ENDIF
  1796.     IF voice#(vn#,691-op#)=3
  1797.       a$="+lin"
  1798.     ENDIF
  1799.     IF voice#(vn#,691-op#)=2
  1800.       a$="+exp"
  1801.     ENDIF
  1802.     IF voice#(vn#,691-op#)=1
  1803.       a$="-exp"
  1804.     ENDIF
  1805.     IF voice#(vn#,691-op#)=0
  1806.       a$="-lin"
  1807.     ENDIF
  1808.     TEXT xpos#,324,"   "
  1809.     TEXT xpos#,324,a$
  1810.   ENDIF
  1811.   '
  1812.   IF n%=689-op#      !RD           (OP1)
  1813.     ADD voice#(vn#,n%),m%
  1814.     IF voice#(vn#,n%)<0
  1815.       voice#(vn#,n%)=0
  1816.     ENDIF
  1817.     IF voice#(vn#,n%)>99
  1818.       voice#(vn#,n%)=99
  1819.     ENDIF
  1820.     TEXT xpos#,336,"   "
  1821.     TEXT xpos#,336,voice#(vn#,689-op#)
  1822.   ENDIF
  1823.   SHOWM
  1824.   PAUSE p#
  1825. RETURN
  1826. > PROCEDURE sensitivity
  1827.   IF op#=0
  1828.     xpos#=280
  1829.   ENDIF
  1830.   IF op#=21
  1831.     xpos#=313
  1832.   ENDIF
  1833.   IF op#=42
  1834.     xpos#=346
  1835.   ENDIF
  1836.   IF op#=63
  1837.     xpos#=379
  1838.   ENDIF
  1839.   IF op#=84
  1840.     xpos#=412
  1841.   ENDIF
  1842.   IF op#=105
  1843.     xpos#=445
  1844.   ENDIF
  1845.   IF n%=694-op#      !Velocity     (OP1)
  1846.     ADD voice#(vn#,n%),m%
  1847.     IF voice#(vn#,n%)<0
  1848.       voice#(vn#,n%)=0
  1849.     ENDIF
  1850.     IF voice#(vn#,n%)>7
  1851.       voice#(vn#,n%)=7
  1852.     ENDIF
  1853.     TEXT xpos#,362,"   "
  1854.     TEXT xpos#,362,voice#(vn#,n%)
  1855.   ENDIF
  1856.   IF n%=528-(op#/21)      !AMS          (OP1)
  1857.     ADD voice#(vn#,n%),m%
  1858.     IF voice#(vn#,n%)<0
  1859.       voice#(vn#,n%)=0
  1860.     ENDIF
  1861.     IF voice#(vn#,n%)>7
  1862.       voice#(vn#,n%)=7
  1863.     ENDIF
  1864.     voice#(vn#,693-op#)=voice#(vn#,528-(op#/21))
  1865.     IF voice#(vn#,693-op#)>3
  1866.       voice#(vn#,693-op#)=3
  1867.     ENDIF
  1868.     TEXT xpos#,374,"   "
  1869.     TEXT xpos#,374,voice#(vn#,n%)
  1870.   ENDIF
  1871.   IF n%=717         !PMS          (ALL OP)
  1872.     ADD voice#(vn#,n%),m%
  1873.     IF voice#(vn#,n%)<0
  1874.       voice#(vn#,n%)=0
  1875.     ENDIF
  1876.     IF voice#(vn#,n%)>7
  1877.       voice#(vn#,n%)=7
  1878.     ENDIF
  1879.     FOR i%=280 TO 445 STEP 33
  1880.       TEXT i%,386,"   "
  1881.       TEXT i%,386,voice#(vn#,n%)
  1882.     NEXT i%
  1883.   ENDIF
  1884.   SHOWM
  1885.   PAUSE p#
  1886. RETURN
  1887. > PROCEDURE pitch_bend
  1888.   xpos#=560
  1889.   IF n%=533           !Range
  1890.     ADD voice#(vn#,n%),m%
  1891.     IF voice#(vn#,n%)<0
  1892.       voice#(vn#,n%)=0
  1893.     ENDIF
  1894.     IF voice#(vn#,n%)>12
  1895.       voice#(vn#,n%)=12
  1896.     ENDIF
  1897.     IF voice#(vn#,534)>0
  1898.       voice#(vn#,n%)=12
  1899.     ENDIF
  1900.     TEXT xpos#,70,"   "
  1901.     TEXT xpos#,70,voice#(vn#,n%)
  1902.   ENDIF
  1903.   IF n%=534           !Step
  1904.     ADD voice#(vn#,n%),m%
  1905.     IF voice#(vn#,n%)<0
  1906.       voice#(vn#,n%)=0
  1907.     ENDIF
  1908.     IF voice#(vn#,n%)>12
  1909.       voice#(vn#,n%)=12
  1910.     ENDIF
  1911.     IF voice#(vn#,n%)>0
  1912.       voice#(vn#,533)=12
  1913.       TEXT xpos#,70,"   "
  1914.       TEXT xpos#,70,voice#(vn#,533)
  1915.     ENDIF
  1916.     TEXT xpos#,82,"   "
  1917.     TEXT xpos#,82,voice#(vn#,n%)
  1918.   ENDIF
  1919.   SHOWM
  1920.   PAUSE p#
  1921. RETURN
  1922. > PROCEDURE portamento
  1923.   xpos#=560
  1924.   IF n%=537           !Mode
  1925.     IF voice#(vn#,n%)=0
  1926.       voice#(vn#,n%)=1
  1927.     ELSE
  1928.       voice#(vn#,n%)=0
  1929.     ENDIF
  1930.     IF voice#(vn#,532)=0 AND voice#(vn#,537)=0
  1931.       a$="Retrain  "
  1932.     ENDIF
  1933.     IF voice#(vn#,532)=0 AND voice#(vn#,537)=1
  1934.       a$="Follow   "
  1935.     ENDIF
  1936.     IF voice#(vn#,532)=1 AND voice#(vn#,537)=1
  1937.       a$="full time"
  1938.     ENDIF
  1939.     IF voice#(vn#,532)=1 AND voice#(vn#,537)=0
  1940.       a$="fingered "
  1941.     ENDIF
  1942.     TEXT xpos#,108,"         "
  1943.     TEXT xpos#,108,a$
  1944.     DO
  1945.       EXIT IF MOUSEK=0
  1946.     LOOP
  1947.   ENDIF
  1948.   IF n%=538           !Step
  1949.     ADD voice#(vn#,n%),m%
  1950.     IF voice#(vn#,n%)<0
  1951.       voice#(vn#,n%)=0
  1952.     ENDIF
  1953.     IF voice#(vn#,n%)>12
  1954.       voice#(vn#,n%)=12
  1955.     ENDIF
  1956.     TEXT xpos#,120,"   "
  1957.     TEXT xpos#,120,voice#(vn#,538)
  1958.   ENDIF
  1959.   IF n%=539           !Time
  1960.     ADD voice#(vn#,n%),m%
  1961.     IF voice#(vn#,n%)<0
  1962.       voice#(vn#,n%)=0
  1963.     ENDIF
  1964.     IF voice#(vn#,n%)>99
  1965.       voice#(vn#,n%)=99
  1966.     ENDIF
  1967.     TEXT xpos#,132,"   "
  1968.     TEXT xpos#,132,voice#(vn#,539)
  1969.   ENDIF
  1970.   IF n%=536           !Random Pitch
  1971.     ADD voice#(vn#,n%),m%
  1972.     IF voice#(vn#,n%)<0
  1973.       voice#(vn#,n%)=0
  1974.     ENDIF
  1975.     IF voice#(vn#,n%)>7
  1976.       voice#(vn#,n%)=7
  1977.     ENDIF
  1978.     TEXT xpos#+35,148,voice#(vn#,536)
  1979.   ENDIF
  1980.   SHOWM
  1981.   PAUSE p#
  1982. RETURN
  1983. > PROCEDURE modulation_wheel
  1984.   xpos#=560
  1985.   IF n%=540           !P.Mode
  1986.     ADD voice#(vn#,n%),m%
  1987.     IF voice#(vn#,n%)<0
  1988.       voice#(vn#,n%)=0
  1989.     ENDIF
  1990.     IF voice#(vn#,n%)>99
  1991.       voice#(vn#,n%)=99
  1992.     ENDIF
  1993.     TEXT xpos#,174,"   "
  1994.     TEXT xpos#,174,voice#(vn#,n%)
  1995.   ENDIF
  1996.   IF n%=541           !A.Mode
  1997.     ADD voice#(vn#,n%),m%
  1998.     IF voice#(vn#,n%)<0
  1999.       voice#(vn#,n%)=0
  2000.     ENDIF
  2001.     IF voice#(vn#,n%)>99
  2002.       voice#(vn#,n%)=99
  2003.     ENDIF
  2004.     TEXT xpos#,186,"   "
  2005.     TEXT xpos#,186,voice#(vn#,n%)
  2006.   ENDIF
  2007.   IF n%=542           !EG.Bias
  2008.     ADD voice#(vn#,n%),m%
  2009.     IF voice#(vn#,n%)<0
  2010.       voice#(vn#,n%)=0
  2011.     ENDIF
  2012.     IF voice#(vn#,n%)>99
  2013.       voice#(vn#,n%)=99
  2014.     ENDIF
  2015.     TEXT xpos#,198,"   "
  2016.     TEXT xpos#,198,voice#(vn#,n%)
  2017.   ENDIF
  2018.   SHOWM
  2019.   PAUSE p#
  2020. RETURN
  2021. > PROCEDURE foot_control
  2022.   xpos#=560
  2023.   IF n%=543           !P.Mode
  2024.     ADD voice#(vn#,n%),m%
  2025.     IF voice#(vn#,n%)<0
  2026.       voice#(vn#,n%)=0
  2027.     ENDIF
  2028.     IF voice#(vn#,n%)>99
  2029.       voice#(vn#,n%)=99
  2030.     ENDIF
  2031.     TEXT xpos#,224,"   "
  2032.     TEXT xpos#,224,voice#(vn#,n%)
  2033.   ENDIF
  2034.   IF n%=544           !A.Mode
  2035.     ADD voice#(vn#,n%),m%
  2036.     IF voice#(vn#,n%)<0
  2037.       voice#(vn#,n%)=0
  2038.     ENDIF
  2039.     IF voice#(vn#,n%)>99
  2040.       voice#(vn#,n%)=99
  2041.     ENDIF
  2042.     TEXT xpos#,238,"   "
  2043.     TEXT xpos#,238,voice#(vn#,n%)
  2044.   ENDIF
  2045.   IF n%=545           !EG.Bias
  2046.     ADD voice#(vn#,n%),m%
  2047.     IF voice#(vn#,n%)<0
  2048.       voice#(vn#,n%)=0
  2049.     ENDIF
  2050.     IF voice#(vn#,n%)>99
  2051.       voice#(vn#,n%)=99
  2052.     ENDIF
  2053.     TEXT xpos#,250,"   "
  2054.     TEXT xpos#,250,voice#(vn#,n%)
  2055.   ENDIF
  2056.   IF n%=546           !Volume
  2057.     ADD voice#(vn#,n%),m%
  2058.     IF voice#(vn#,n%)<0
  2059.       voice#(vn#,n%)=0
  2060.     ENDIF
  2061.     IF voice#(vn#,n%)>99
  2062.       voice#(vn#,n%)=99
  2063.     ENDIF
  2064.     TEXT xpos#,262,"   "
  2065.     TEXT xpos#,262,voice#(vn#,n%)
  2066.   ENDIF
  2067.   SHOWM
  2068.   PAUSE p#
  2069. RETURN
  2070. > PROCEDURE breath_control
  2071.   xpos#=560
  2072.   IF n%=547           !P.Mode
  2073.     ADD voice#(vn#,n%),m%
  2074.     IF voice#(vn#,n%)<0
  2075.       voice#(vn#,n%)=0
  2076.     ENDIF
  2077.     IF voice#(vn#,n%)>99
  2078.       voice#(vn#,n%)=99
  2079.     ENDIF
  2080.     TEXT xpos#,288,"   "
  2081.     TEXT xpos#,288,voice#(vn#,n%)
  2082.   ENDIF
  2083.   IF n%=548           !A.Mode
  2084.     ADD voice#(vn#,n%),m%
  2085.     IF voice#(vn#,n%)<0
  2086.       voice#(vn#,n%)=0
  2087.     ENDIF
  2088.     IF voice#(vn#,n%)>99
  2089.       voice#(vn#,n%)=99
  2090.     ENDIF
  2091.     TEXT xpos#,300,"   "
  2092.     TEXT xpos#,300,voice#(vn#,n%)
  2093.   ENDIF
  2094.   IF n%=549           !EG.Bias
  2095.     ADD voice#(vn#,n%),m%
  2096.     IF voice#(vn#,n%)<0
  2097.       voice#(vn#,n%)=0
  2098.     ENDIF
  2099.     IF voice#(vn#,n%)>99
  2100.       voice#(vn#,n%)=99
  2101.     ENDIF
  2102.     TEXT xpos#,312,"   "
  2103.     TEXT xpos#,312,voice#(vn#,n%)
  2104.   ENDIF
  2105.   IF n%=550           !P.Bias
  2106.     ADD voice#(vn#,n%),m%
  2107.     IF voice#(vn#,n%)<0
  2108.       voice#(vn#,n%)=0
  2109.     ENDIF
  2110.     IF voice#(vn#,n%)>100
  2111.       voice#(vn#,n%)=100
  2112.     ENDIF
  2113.     TEXT xpos#,324,"   "
  2114.     TEXT xpos#,324,voice#(vn#,n%)-50
  2115.   ENDIF
  2116.   SHOWM
  2117.   PAUSE p#
  2118. RETURN
  2119. > PROCEDURE after_touch
  2120.   xpos#=560
  2121.   IF n%=551           !P.Mode
  2122.     ADD voice#(vn#,n%),m%
  2123.     IF voice#(vn#,n%)<0
  2124.       voice#(vn#,n%)=0
  2125.     ENDIF
  2126.     IF voice#(vn#,n%)>99
  2127.       voice#(vn#,n%)=99
  2128.     ENDIF
  2129.     TEXT xpos#,350,"   "
  2130.     TEXT xpos#,350,voice#(vn#,n%)
  2131.   ENDIF
  2132.   IF n%=552           !A.Mode
  2133.     ADD voice#(vn#,n%),m%
  2134.     IF voice#(vn#,n%)<0
  2135.       voice#(vn#,n%)=0
  2136.     ENDIF
  2137.     IF voice#(vn#,n%)>99
  2138.       voice#(vn#,n%)=99
  2139.     ENDIF
  2140.     TEXT xpos#,362,"   "
  2141.     TEXT xpos#,362,voice#(vn#,n%)
  2142.   ENDIF
  2143.   IF n%=553           !EG.Bias
  2144.     ADD voice#(vn#,n%),m%
  2145.     IF voice#(vn#,n%)<0
  2146.       voice#(vn#,n%)=0
  2147.     ENDIF
  2148.     IF voice#(vn#,n%)>99
  2149.       voice#(vn#,n%)=99
  2150.     ENDIF
  2151.     TEXT xpos#,374,"   "
  2152.     TEXT xpos#,374,voice#(vn#,n%)
  2153.   ENDIF
  2154.   IF n%=554           !P.Bias
  2155.     ADD voice#(vn#,n%),m%
  2156.     IF voice#(vn#,n%)<0
  2157.       voice#(vn#,n%)=0
  2158.     ENDIF
  2159.     IF voice#(vn#,n%)>100
  2160.       voice#(vn#,n%)=100
  2161.     ENDIF
  2162.     TEXT xpos#,386,"   "
  2163.     TEXT xpos#,386,voice#(vn#,n%)-50
  2164.   ENDIF
  2165.   SHOWM
  2166.   PAUSE p#
  2167. RETURN
  2168. ' ---------------------------------VOICE-DATEN EDITIEREN (ENDE)
  2169. > PROCEDURE print_data
  2170.   PAUSE 10
  2171.   ALERT 2,"Sound drucken:| |Ist richtiger Hardcopytreiber|   geladen? ",1," JA | NEIN ",dummy#
  2172.   IF dummy#=1
  2173.     SGET screen$
  2174.     GET 32,33,155,379,teil1$
  2175.     GET 155,33,227,391,teil2$
  2176.     GET 227,47,619,391,teil3$
  2177.     GET 292,25,522,44,teil4$
  2178.     CLS
  2179.     PUT 32,33,teil1$
  2180.     PUT 155,33,teil2$
  2181.     PUT 227,47,teil3$
  2182.     PUT 292,25,teil4$
  2183.     HIDEM
  2184.     HARDCOPY
  2185.     SPUT screen$
  2186.     SHOWM
  2187.   ENDIF
  2188. RETURN
  2189. > PROCEDURE send_data
  2190.   CLR test%
  2191.   FOR i%=517 TO 565
  2192.     IF voice#(vn#,i%)<>0
  2193.       INC test%
  2194.     ENDIF
  2195.   NEXT i%
  2196.   FOR i%=574 TO 728
  2197.     IF voice#(vn#,i%)<>0
  2198.       INC test%
  2199.     ENDIF
  2200.   NEXT i%
  2201.   IF test%>0
  2202.     ' ---------------
  2203.     OUT 3,240
  2204.     OUT 3,67
  2205.     OUT 3,0
  2206.     OUT 3,5
  2207.     OUT 3,0
  2208.     OUT 3,49
  2209.     CLR x1%,summe%
  2210.     FOR n%=517 TO 565
  2211.       OUT 3,voice#(vn#,n%)
  2212.       x1%=x1%+voice#(vn#,n%)
  2213.       ADD summe%,128
  2214.     NEXT n%
  2215.     s#=summe%-x1%
  2216.     check%=s#-128*INT(s#/128)
  2217.     OUT 3,check%
  2218.     OUT 3,247
  2219.     ' ---------------
  2220.     OUT 3,240
  2221.     OUT 3,67
  2222.     OUT 3,0
  2223.     OUT 3,0
  2224.     OUT 3,1
  2225.     OUT 3,27
  2226.     CLR x1%,summe%
  2227.     FOR n%=574 TO 728
  2228.       OUT 3,voice#(vn#,n%)
  2229.       x1%=x1%+voice#(vn#,n%)
  2230.       ADD summe%,128
  2231.     NEXT n%
  2232.     s#=summe%-x1%
  2233.     check%=s#-128*INT(s#/128)
  2234.     OUT 3,check%
  2235.     OUT 3,247
  2236.     ' ---------------
  2237.   ELSE
  2238.     PAUSE 10
  2239.     ALERT 1,"  |  |  |Keine Voice-Daten vorhanden",1," RETURN ",dummy#
  2240.   ENDIF
  2241. RETURN
  2242. > PROCEDURE tastatur
  2243.   DEFMOUSE 3
  2244.   GET 153,350,639,399,tastatur$
  2245.   DEFFILL 0
  2246.   PBOX 153,350,621,399
  2247.   FOR i%=153 TO 608 STEP 13
  2248.     BOX i%,350,i%+13,399
  2249.   NEXT i%
  2250.   DEFFILL 1
  2251.   FOR i%=0 TO 4
  2252.     '
  2253.     PBOX 161+(i%*91),350,161+(i%*91)+7,380
  2254.     PBOX 177+(i%*91),350,177+(i%*91)+7,380
  2255.     '
  2256.     PBOX 200+(i%*91),350,200+(i%*91)+7,380
  2257.     PBOX 214+(i%*91),350,214+(i%*91)+8,380
  2258.     PBOX 229+(i%*91),350,229+(i%*91)+7,380
  2259.     '
  2260.   NEXT i%
  2261.   CLR z#
  2262.   note_on#=1
  2263.   DO
  2264.     EXIT IF MOUSEY<399
  2265.   LOOP
  2266.   DO
  2267.     IF MOUSEX>152 AND MOUSEX<615
  2268.       note_alt#=note#
  2269.       IF xx#<>(INT(MOUSEX/7.6)*7.6)+5 OR MOUSEK=1 OR note_off#=1
  2270.         IF z#<>0
  2271.           f#=-POINT(xx#+1,356)+1
  2272.           DEFFILL f#
  2273.           PBOX xx#,355,xx#+2,360
  2274.         ENDIF
  2275.         z#=1
  2276.         xx#=(INT(MOUSEX/7.6)*7.6)+5
  2277.         f#=-POINT(xx#+1,356)+1
  2278.         DEFFILL f#
  2279.         PBOX xx#,355,xx#+2,360
  2280.         IF MOUSEK=1
  2281.           IF note_on#=1
  2282.             note_on#=0
  2283.             note#=INT(xx#/7.6)+16
  2284.             OUT 3,kanal#
  2285.             OUT 3,note#
  2286.             OUT 3,64
  2287.             SHOWM
  2288.             note_off#=1
  2289.           ENDIF
  2290.         ELSE
  2291.           IF note_off#=1
  2292.             note_off#=0
  2293.             OUT 3,kanal#
  2294.             OUT 3,note_alt#
  2295.             OUT 3,0
  2296.             SHOWM
  2297.             note_on#=1
  2298.           ENDIF
  2299.         ENDIF
  2300.         SHOWM
  2301.       ENDIF
  2302.     ENDIF
  2303.     EXIT IF MOUSEY>398
  2304.   LOOP
  2305.   PUT 153,350,tastatur$
  2306.   DO
  2307.     EXIT IF MOUSEY<399
  2308.   LOOP
  2309.   DEFFILL 1
  2310.   FOR i%=36 TO 96
  2311.     OUT 3,kanal#
  2312.     OUT 3,i%
  2313.     OUT 3,0
  2314.   NEXT i%
  2315.   DO
  2316.     EXIT IF MOUSEK=0
  2317.   LOOP
  2318.   DEFMOUSE 8
  2319. RETURN
  2320. ' ---------------------------------EG GRAFISCH DARSTELLEN (ANFANG)
  2321. > PROCEDURE grafik_eg_test
  2322. weiter1:
  2323.   IF MOUSEK
  2324.     IF MOUSEY>99 AND MOUSEY<111
  2325.       IF MOUSEX>250 AND MOUSEX<278 !OP
  2326.         GOSUB grafik_eg
  2327.         GOTO weiter1
  2328.       ENDIF
  2329.       IF MOUSEX>278 AND MOUSEX<311 !OP1
  2330.         op#=0
  2331.         i%=1
  2332.         GOSUB grafik_eg_op1_6
  2333.         GOTO weiter1
  2334.       ENDIF
  2335.       IF MOUSEX>311 AND MOUSEX<344 !OP2
  2336.         op#=-21
  2337.         i%=2
  2338.         GOSUB grafik_eg_op1_6
  2339.         GOTO weiter1
  2340.       ENDIF
  2341.       IF MOUSEX>344 AND MOUSEX<377 !OP3
  2342.         op#=-42
  2343.         i%=3
  2344.         GOSUB grafik_eg_op1_6
  2345.         GOTO weiter1
  2346.       ENDIF
  2347.       IF MOUSEX>377 AND MOUSEX<410 !OP4
  2348.         op#=-63
  2349.         i%=4
  2350.         GOSUB grafik_eg_op1_6
  2351.         GOTO weiter1
  2352.       ENDIF
  2353.       IF MOUSEX>410 AND MOUSEX<443 !OP5
  2354.         op#=-84
  2355.         i%=5
  2356.         GOSUB grafik_eg_op1_6
  2357.         GOTO weiter1
  2358.       ENDIF
  2359.       IF MOUSEX>443 AND MOUSEX<475 !OP6
  2360.         op#=-105
  2361.         i%=6
  2362.         GOSUB grafik_eg_op1_6
  2363.         GOTO weiter1
  2364.       ENDIF
  2365.     ENDIF
  2366.   ENDIF
  2367. RETURN
  2368. > PROCEDURE grafik_eg
  2369.   DO
  2370.     EXIT IF MOUSEK=0
  2371.   LOOP
  2372.   GET 158,112,475,226,eg$
  2373.   PBOX 158,112,475,226
  2374.   h#=210
  2375.   v#=170
  2376.   CLR op#
  2377.   FOR i%=1 TO 6
  2378.     r1#=100-voice#(vn#,679+op#)
  2379.     r2#=100-voice#(vn#,680+op#)+r1#
  2380.     r3#=100-voice#(vn#,681+op#)+r2#
  2381.     r_off#=100-40+r3#
  2382.     r4#=100-voice#(vn#,682+op#)+r_off#
  2383.     DIV r1#,2
  2384.     DIV r2#,2
  2385.     DIV r3#,2
  2386.     DIV r_off#,2
  2387.     DIV r4#,2
  2388.     ADD r1#,h#
  2389.     ADD r2#,h#
  2390.     ADD r3#,h#
  2391.     ADD r_off#,h#
  2392.     ADD r4#,h#
  2393.     l1#=v#-(voice#(vn#,683+op#)/2)
  2394.     l2#=v#-(voice#(vn#,684+op#)/2)
  2395.     l3#=v#-(voice#(vn#,685+op#)/2)
  2396.     l_off#=l3#
  2397.     l4#=v#-(voice#(vn#,686+op#)/2)
  2398.     GRAPHMODE 1
  2399.     COLOR 0
  2400.     DRAW h#-10,l4# TO h#,l4# TO r1#,l1# TO r2#,l2# TO r3#,l3# TO r_off#,l_off# TO r4#,l4# TO r4#+10,l4#
  2401.     COLOR 1
  2402.     GRAPHMODE 3
  2403.     TEXT h#-47,v#+2,"OP"
  2404.     TEXT h#-35,v#+2,i%
  2405.     ADD v#,10
  2406.     ADD h#,5
  2407.     SUB op#,21
  2408.   NEXT i%
  2409.   SHOWM
  2410.   DO
  2411.     EXIT IF MOUSEK
  2412.   LOOP
  2413.   DO
  2414.     EXIT IF MOUSEK=0
  2415.   LOOP
  2416.   PUT 158,112,eg$
  2417.   GRAPHMODE 1
  2418.   SHOWM
  2419. RETURN
  2420. > PROCEDURE grafik_eg_op1_6
  2421.   DO
  2422.     EXIT IF MOUSEK=0
  2423.   LOOP
  2424.   GET 158,112,475,226,eg$
  2425.   PBOX 158,112,475,226
  2426.   h#=220
  2427.   v#=170
  2428.   r1#=100-voice#(vn#,679+op#)
  2429.   r2#=100-voice#(vn#,680+op#)+r1#
  2430.   r3#=100-voice#(vn#,681+op#)+r2#
  2431.   r_off#=100-40+r3#
  2432.   r4#=100-voice#(vn#,682+op#)+r_off#
  2433.   DIV r1#,2
  2434.   DIV r2#,2
  2435.   DIV r3#,2
  2436.   DIV r_off#,2
  2437.   DIV r4#,2
  2438.   ADD r1#,h#
  2439.   ADD r2#,h#
  2440.   ADD r3#,h#
  2441.   ADD r_off#,h#
  2442.   ADD r4#,h#
  2443.   l1#=v#-(voice#(vn#,683+op#)/2)
  2444.   l2#=v#-(voice#(vn#,684+op#)/2)
  2445.   l3#=v#-(voice#(vn#,685+op#)/2)
  2446.   l_off#=l3#
  2447.   l4#=v#-(voice#(vn#,686+op#)/2)
  2448.   GRAPHMODE 1
  2449.   COLOR 0
  2450.   DRAW h#-10,l4# TO h#,l4# TO r1#,l1# TO r2#,l2# TO r3#,l3# TO r_off#,l_off# TO r4#,l4# TO r4#+10,l4#
  2451.   DEFLINE 4,1,1,0
  2452.   PLOT h#,180
  2453.   DRAW  TO h#,200
  2454.   PLOT r_off#,180
  2455.   DRAW  TO r_off#,200
  2456.   DEFLINE 1,0,0,0
  2457.   COLOR 1
  2458.   GRAPHMODE 3
  2459.   TEXT h#-32,l4#+2,"OP"
  2460.   TEXT h#-20,l4#+2,i%
  2461.   TEXT h#-47,210,"KEY:   ON"
  2462.   TEXT r_off#-7,210,"OFF"
  2463.   SHOWM
  2464.   DO
  2465.     EXIT IF MOUSEK
  2466.   LOOP
  2467.   DO
  2468.     EXIT IF MOUSEK=0
  2469.   LOOP
  2470.   PUT 158,112,eg$
  2471.   GRAPHMODE 1
  2472.   SHOWM
  2473. RETURN
  2474. ' ---------------------------------EG GRAFISCH DARSTELLEN (ENDE)
  2475. ' ---------------------------------HILFSTEXT AUSGEBEN (ANFANG)
  2476. > PROCEDURE hilfe_test
  2477. weiter2:
  2478.   hilfe$="aus"
  2479.   IF MOUSEK
  2480.     IF MOUSEX>35 AND MOUSEX<154
  2481.       IF MOUSEY>50 AND MOUSEY<60
  2482.         hilfe$="an"
  2483.         GOSUB hilfe_algorithm
  2484.         GOTO weiter2
  2485.       ENDIF
  2486.       IF MOUSEY>126 AND MOUSEY<136
  2487.         hilfe$="an"
  2488.         GOSUB hilfe_lfo
  2489.         GOTO weiter2
  2490.       ENDIF
  2491.       IF MOUSEY>230 AND MOUSEY<240
  2492.         hilfe$="an"
  2493.         GOSUB hilfe_pitch_eg
  2494.         GOTO weiter2
  2495.       ENDIF
  2496.     ENDIF
  2497.     IF MOUSEX>158 AND MOUSEX<249
  2498.       IF MOUSEY>50 AND MOUSEY<60
  2499.         hilfe$="an"
  2500.         GOSUB hilfe_oscillator
  2501.         GOTO weiter2
  2502.       ENDIF
  2503.       IF MOUSEY>100 AND MOUSEY<110
  2504.         hilfe$="an"
  2505.         GOSUB hilfe_eg
  2506.         GOTO weiter2
  2507.       ENDIF
  2508.       IF MOUSEY>230 AND MOUSEY<240
  2509.         hilfe$="an"
  2510.         GOSUB hilfe_output_level
  2511.         GOTO weiter2
  2512.       ENDIF
  2513.       IF MOUSEY>342 AND MOUSEY<352
  2514.         hilfe$="an"
  2515.         GOSUB hilfe_sensitivity
  2516.         GOTO weiter2
  2517.       ENDIF
  2518.     ENDIF
  2519.     IF MOUSEX>479 AND MOUSEX<616
  2520.       IF MOUSEY>50 AND MOUSEY<60
  2521.         hilfe$="an"
  2522.         GOSUB hilfe_pitch_bend
  2523.         GOTO weiter2
  2524.       ENDIF
  2525.       IF MOUSEY>88 AND MOUSEY<98
  2526.         hilfe$="an"
  2527.         GOSUB hilfe_portamento
  2528.         GOTO weiter2
  2529.       ENDIF
  2530.       IF MOUSEY>154 AND MOUSEY<164
  2531.         hilfe$="an"
  2532.         GOSUB hilfe_modulation_wheel
  2533.         GOTO weiter2
  2534.       ENDIF
  2535.       IF MOUSEY>204 AND MOUSEY<214
  2536.         hilfe$="an"
  2537.         GOSUB hilfe_foot_control
  2538.         GOTO weiter2
  2539.       ENDIF
  2540.       IF MOUSEY>268 AND MOUSEY<278
  2541.         hilfe$="an"
  2542.         GOSUB hilfe_breath_control
  2543.         GOTO weiter2
  2544.       ENDIF
  2545.       IF MOUSEY>330 AND MOUSEY<340
  2546.         hilfe$="an"
  2547.         GOSUB hilfe_after_touch
  2548.         GOTO weiter2
  2549.       ENDIF
  2550.     ENDIF
  2551.   ENDIF
  2552. RETURN
  2553. > PROCEDURE hilfe_algorithm
  2554.   SGET screen$
  2555.   DO
  2556.     EXIT IF MOUSEK=0
  2557.   LOOP
  2558.   PBOX 157,49,617,389
  2559.   PBOX 34,49,157,377
  2560.   GRAPHMODE 3
  2561.   DEFTEXT ,,,6
  2562.   h#=60
  2563.   v#=65
  2564.   TEXT h#,v#,"Algorithm (1-32)"
  2565.   ADD v#,10
  2566.   TEXT h#,v#,"Diese  Parameter  beeinflussen  die gesamte Instrumentstimme und"
  2567.   ADD v#,10
  2568.   TEXT h#,v#,"sind eine Verknüpfung der 6 Operatoren."
  2569.   ADD v#,20
  2570.   TEXT h#,v#,"Feedback - Level (0-7)"
  2571.   ADD v#,10
  2572.   TEXT h#,v#,"Ein Operator pro Algorithmus kann auf einer Skala von 0 bis 7 so"
  2573.   ADD v#,10
  2574.   TEXT h#,v#,"eingestellt  werden,  daß er  sich durch Rückkopplung (Feedback)"
  2575.   ADD v#,10
  2576.   TEXT h#,v#,"selbst moduliert."
  2577.   ADD v#,20
  2578.   TEXT h#,v#,"Oscillator key Sync (on/off) (Oszillator-Tastensynchronisierung)"
  2579.   ADD v#,10
  2580.   TEXT h#,v#,"Wenn  eingeschaltet,  setzen  alle  Operatoren  mit Phase 0 ein."
  2581.   ADD v#,20
  2582.   TEXT h#,v#,"Transpose (C1-C5) (Transponierung)"
  2583.   ADD v#,10
  2584.   TEXT h#,v#,"Die  Instrumentenstimmen  können  um  +/- 2 Oktaven transponiert"
  2585.   ADD v#,10
  2586.   TEXT h#,v#,"werden. Normaleinstellung: C3"
  2587.   DEFTEXT ,,,4
  2588.   GRAPHMODE 1
  2589.   DO
  2590.     EXIT IF MOUSEK
  2591.   LOOP
  2592.   DO
  2593.     EXIT IF MOUSEK=0
  2594.   LOOP
  2595.   SPUT screen$
  2596.   SHOWM
  2597. RETURN
  2598. > PROCEDURE hilfe_lfo
  2599.   SGET screen$
  2600.   DO
  2601.     EXIT IF MOUSEK=0
  2602.   LOOP
  2603.   PBOX 157,49,617,389
  2604.   PBOX 34,49,157,377
  2605.   GRAPHMODE 3
  2606.   DEFTEXT ,,,6
  2607.   h#=60
  2608.   v#=65
  2609.   TEXT h#,v#,"LFO    (Niederfrequenzoszillator für alle Operatoren gemeinsam)"
  2610.   ADD v#,20
  2611.   TEXT h#,v#,"Wave:  Dreiecks-,  Sägezahn- (oben),  Sägezahn- (unten),  Rechteck-,"
  2612.   ADD v#,10
  2613.   TEXT h#,v#,"       Sinus-, und Zufallswelle."
  2614.   ADD v#,60
  2615.   TEXT h#,v#,"Speed: (0-99)"
  2616.   ADD v#,10
  2617.   TEXT h#,v#,"       Bestimmt die LFO-Frequenz."
  2618.   ADD v#,20
  2619.   TEXT h#,v#,"Delay: (0-99) (Verzögerung)"
  2620.   ADD v#,10
  2621.   TEXT h#,v#,"       Hiermit kann das Einsetzen des LFO zeitlich verzögert werden."
  2622.   ADD v#,20
  2623.   TEXT h#,v#,"Mode:  (single, multi) (Betriebsart)"
  2624.   ADD v#,10
  2625.   TEXT h#,v#,"       Bei  SINGLE beginnt die LFO-Phase mit dem ersten Anschlag und"
  2626.   ADD v#,10
  2627.   TEXT h#,v#,"       setzt sich unabhängig von nachfolgenden Anschlägen fort (d.h."
  2628.   ADD v#,10
  2629.   TEXT h#,v#,"       der LFO-Effekt ist für alle Noten 'synchronisiert')."
  2630.   ADD v#,10
  2631.   TEXT h#,v#,"       Bei  MULTI hängt die LFO-Einschwingung nicht vom Anschlag ab,"
  2632.   ADD v#,10
  2633.   TEXT h#,v#,"       so daß jede Note mit einer anderen Phase einsetzen kann."
  2634.   ADD v#,20
  2635.   TEXT h#,v#,"Pmd:   (0-99) (Tonhöhenmodulationsgrad) (siehe auch Sensitivity)"
  2636.   ADD v#,20
  2637.   TEXT h#,v#,"Amd:   (0-99) (Amplitudenmodulationsgrad)"
  2638.   ADD v#,10
  2639.   TEXT h#,v#,"       Pmd und Amd bestimmen den Gehalt des direkt zur Instrumenten-"
  2640.   ADD v#,10
  2641.   TEXT h#,v#,"       stimme geschickten LFO-Signals 'automatisch', im Gegensatz zu"
  2642.   ADD v#,10
  2643.   TEXT h#,v#,"       reglergesteuerten Effekten usw."
  2644.   ADD v#,20
  2645.   TEXT h#,v#,"Sync:  (off/on)"
  2646.   ADD v#,10
  2647.   TEXT h#,v#,"       Bei aktivierter Synchronisation beginnt der LFO für jede neue"
  2648.   ADD v#,10
  2649.   TEXT h#,v#,"       Note wieder am Nullpunkt."
  2650.   DEFTEXT ,,,4
  2651.   GRAPHMODE 1
  2652.   COLOR 0
  2653.   DRAW 140,120 TO 150,110 TO 170,130 TO 180,120
  2654.   DRAW 220,130 TO 260,110 TO 260,130
  2655.   DRAW 300,110 TO 340,130 TO 340,110
  2656.   DRAW 380,120 TO 380,110 TO 400,110 TO 400,130 TO 420,130 TO 420,120
  2657.   CLR nx#
  2658.   PLOT 460,120
  2659.   FOR i#=0 TO 360 STEP 6
  2660.     ADD nx#,240/360
  2661.     ny#=SIN(i#*PI/180)
  2662.     DRAW  TO nx#+460,120-10*ny#
  2663.   NEXT i#
  2664.   DRAW 540,120 TO 540,115 TO 545,115 TO 545,125 TO 550,125 TO 550,110
  2665.   DRAW  TO 555,110 TO 555,135 TO 560,135 TO 560,120 TO 565,120 TO 565,130
  2666.   DRAW  TO 570,130 TO 570,125 TO 575,125 TO 575,105 TO 580,105 TO 580,135
  2667.   DRAW  TO 585,135 TO 585,115 TO 590,115 TO 590,120
  2668.   COLOR 1
  2669.   DO
  2670.     EXIT IF MOUSEK
  2671.   LOOP
  2672.   DO
  2673.     EXIT IF MOUSEK=0
  2674.   LOOP
  2675.   SPUT screen$
  2676.   SHOWM
  2677. RETURN
  2678. > PROCEDURE hilfe_pitch_eg
  2679.   SGET screen$
  2680.   DO
  2681.     EXIT IF MOUSEK=0
  2682.   LOOP
  2683.   PBOX 157,49,617,389
  2684.   PBOX 34,49,157,377
  2685.   GRAPHMODE 3
  2686.   DEFTEXT ,,,6
  2687.   h#=60
  2688.   v#=65
  2689.   TEXT h#,v#,"Tonhöhen-EG  (EG = Hüllkurvengenerator)"
  2690.   ADD v#,20
  2691.   TEXT h#,v#,"Tonhöhen-EG-Rate R1-R4  und -Pegel L1-L4  bestimmen,  wie  sich die"
  2692.   ADD v#,10
  2693.   TEXT h#,v#,"Tonhöhe  im zeitlichen Verlauf ändert. Pegel (L) 50 ist die normale"
  2694.   ADD v#,10
  2695.   TEXT h#,v#,"Tonhöhe. Der  Bereich der  Tonhöhenänderung für  die Pegel 0 bis 99"
  2696.   ADD v#,10
  2697.   TEXT h#,v#,"kann  zwischen 1/2 und 8 Oktaven  eingestellt werden. Wenn die Ton-"
  2698.   ADD v#,10
  2699.   TEXT h#,v#,"höhen-EG-Anschlagdynamik  aktiviert ist,  hängt die  Intensität des"
  2700.   ADD v#,10
  2701.   TEXT h#,v#,"Tonhöhen-EG-Effekts  von der Anschlagstärke ab. Für Ratenskalierung"
  2702.   ADD v#,10
  2703.   TEXT h#,v#,"0 verläuft die Hüllkurve für alle Noten des Keyboards gleichschnell"
  2704.   ADD v#,10
  2705.   TEXT h#,v#,"(d.h. gleiche  Notendauer für alle Tasten), bei höheren Werten wird"
  2706.   ADD v#,10
  2707.   TEXT h#,v#,"die Hüllkurve für höhere Noten zunehmend 'schneller'."
  2708.   ADD v#,30
  2709.   TEXT h#,v#,"Rng: (1/2, 1, 2, 8 Oktaven) Bereich"
  2710.   ADD v#,10
  2711.   TEXT h#,v#,"Vel: (on/off)               Tonhöhen-EG-Anschlagsdynamik"
  2712.   ADD v#,10
  2713.   TEXT h#,v#,"Rs:  (0-7)                  Ratenskalierung"
  2714.   ADD v#,10
  2715.   TEXT h#,v#,"R1-4 (0-99)                 Rate 1-4"
  2716.   ADD v#,10
  2717.   TEXT h#,v#,"L1-4 (0-99)                 Pegel 1-4"
  2718.   DEFTEXT ,,,4
  2719.   GRAPHMODE 1
  2720.   DO
  2721.     EXIT IF MOUSEK
  2722.   LOOP
  2723.   DO
  2724.     EXIT IF MOUSEK=0
  2725.   LOOP
  2726.   SPUT screen$
  2727.   SHOWM
  2728. RETURN
  2729. > PROCEDURE hilfe_oscillator
  2730.   SGET screen$
  2731.   DO
  2732.     EXIT IF MOUSEK=0
  2733.   LOOP
  2734.   PBOX 157,49,617,389
  2735.   PBOX 34,49,157,377
  2736.   GRAPHMODE 3
  2737.   DEFTEXT ,,,6
  2738.   h#=60
  2739.   v#=65
  2740.   TEXT h#,v#,"Oszillator"
  2741.   ADD v#,20
  2742.   TEXT h#,v#,"Hier  kann  für  jeden  Operator die Frequenz eingestellt werden."
  2743.   ADD v#,30
  2744.   TEXT h#,v#,"Mode:  (ratio/fixed) (Betriebsart - variierend/fest)"
  2745.   ADD v#,10
  2746.   TEXT h#,v#,"       Bei  RATIO  hängt die Frequenz des Operators von der ange-"
  2747.   ADD v#,10
  2748.   TEXT h#,v#,"       schlagenen  Taste ab.  Für die  Einstellung FIXED wird die"
  2749.   ADD v#,10
  2750.   TEXT h#,v#,"       Frequenz  in  Hz angezeigt  und  bleibt unabhängig von der"
  2751.   ADD v#,10
  2752.   TEXT h#,v#,"       angeschlagenen Taste immer gleich."
  2753.   ADD v#,20
  2754.   TEXT h#,v#,"Coarse/Fine: (Grob-/Feineinstellung)"
  2755.   ADD v#,10
  2756.   TEXT h#,v#,"       Wird der linke Teil des Operatorfeldes angeklickt, erfolgt"
  2757.   ADD v#,10
  2758.   TEXT h#,v#,"       die  Einstellung in groben Schritten, beim rechten Teil in"
  2759.   ADD v#,10
  2760.   TEXT h#,v#,"       Feinschritten."
  2761.   ADD v#,20
  2762.   TEXT h#,v#,"Detune: (Einstimmung)"
  2763.   ADD v#,10
  2764.   TEXT h#,v#,"       Eine  'extrafeine'  Frequenzeinstellung über einen Bereich"
  2765.   ADD v#,10
  2766.   TEXT h#,v#,"       von etwa +/- 2 Halbtonhundertstel."
  2767.   DEFTEXT ,,,4
  2768.   GRAPHMODE 1
  2769.   DO
  2770.     EXIT IF MOUSEK
  2771.   LOOP
  2772.   DO
  2773.     EXIT IF MOUSEK=0
  2774.   LOOP
  2775.   SPUT screen$
  2776.   SHOWM
  2777. RETURN
  2778. > PROCEDURE hilfe_eg
  2779.   SGET screen$
  2780.   DO
  2781.     EXIT IF MOUSEK=0
  2782.   LOOP
  2783.   PBOX 157,49,617,389
  2784.   PBOX 34,49,157,377
  2785.   GRAPHMODE 3
  2786.   DEFTEXT ,,,6
  2787.   h#=60
  2788.   v#=65
  2789.   TEXT h#,v#,"Hüllkurvengenerator"
  2790.   ADD v#,20
  2791.   TEXT h#,v#,"Hüllkurvengenerator  und  Skalierung  für  die einzelnen Operatoren."
  2792.   ADD v#,10
  2793.   TEXT h#,v#,"Es  stehen  zwei  Anzeigen  zur Wahl.  Die  eine Anzeige stellt alle"
  2794.   ADD v#,10
  2795.   TEXT h#,v#,"Hüllkurvenparameter  für  die  Operatoren  numerisch dar. Die andere"
  2796.   ADD v#,10
  2797.   TEXT h#,v#,"ist eine grafische Darstellung der einzelnen Operatoren."
  2798.   ADD v#,10
  2799.   TEXT h#,v#,"Feld OP zeigt alle 6 Operatoren, und Felder 1...6 zeigt sie einzeln."
  2800.   ADD v#,30
  2801.   TEXT h#,v#,"Rate scaling (0-7) (Ratenskalierung)"
  2802.   ADD v#,10
  2803.   TEXT h#,v#,"           Bei einer  Einstellung  von 0 ist die geschwindigkeit der"
  2804.   ADD v#,10
  2805.   TEXT h#,v#,"           Hüllkurve für alle Tasten gleich. Je höher der Wert, umso"
  2806.   ADD v#,10
  2807.   TEXT h#,v#,"           schneller wird die Hüllkurve."
  2808.   ADD v#,20
  2809.   TEXT h#,v#,"Rate 1-4 (0-99) (Verhältnis)"
  2810.   ADD v#,10
  2811.   TEXT h#,v#,"Level 1-4 (Pegel)"
  2812.   ADD v#,10
  2813.   TEXT h#,v#,"           Rate und Level 1-4 bestimmen die 'Gestalt' der Hüllkurve."
  2814.   DEFTEXT ,,,4
  2815.   GRAPHMODE 1
  2816.   DO
  2817.     EXIT IF MOUSEK
  2818.   LOOP
  2819.   DO
  2820.     EXIT IF MOUSEK=0
  2821.   LOOP
  2822.   SPUT screen$
  2823.   SHOWM
  2824. RETURN
  2825. > PROCEDURE hilfe_output_level
  2826.   SGET screen$
  2827.   DO
  2828.     EXIT IF MOUSEK=0
  2829.   LOOP
  2830.   PBOX 157,49,617,389
  2831.   PBOX 34,49,157,377
  2832.   GRAPHMODE 3
  2833.   DEFTEXT ,,,6
  2834.   h#=60
  2835.   v#=65
  2836.   TEXT h#,v#,"Ausgangspegel"
  2837.   ADD v#,30
  2838.   TEXT h#,v#,"Level: (0-99) Operator-Ausgangspegel"
  2839.   ADD v#,10
  2840.   TEXT h#,v#,"Ld:    (0-99) Skalierungsgrad links"
  2841.   ADD v#,10
  2842.   TEXT h#,v#,"Lc:    (+/-, lin/exp) Linke Skalierungskurve (linear/exponential)"
  2843.   ADD v#,10
  2844.   TEXT h#,v#,"Bp:    (A-1 - C8) Grenzpunkt"
  2845.   ADD v#,10
  2846.   TEXT h#,v#,"Rc:    (+/-, lin/exp) Rechte Skalierungskurve"
  2847.   ADD v#,10
  2848.   TEXT h#,v#,"Rd:    (0-99) Skalierungsgrad rechts"
  2849.   DEFTEXT ,,,4
  2850.   BOX 200,200,400,300
  2851.   GRAPHMODE 1
  2852.   COLOR 0
  2853.   DRAW 200,200 TO 400,300
  2854.   DRAW 200,300 TO 400,200
  2855.   DRAW 300,200 TO 300,300
  2856.   DRAW 200,250 TO 400,250
  2857.   DRAW 300,200 TO 300,300
  2858.   CIRCLE 300,120,130,2200,3200
  2859.   CIRCLE 300,380,130,400,1400
  2860.   COLOR 1
  2861.   GRAPHMODE 3
  2862.   TEXT 220,245,"+EXP"
  2863.   TEXT 220,258,"-EXP"
  2864.   TEXT 360,245,"+EXP"
  2865.   TEXT 360,258,"-EXP"
  2866.   TEXT 250,225,"+LIN"
  2867.   TEXT 250,280,"-LIN"
  2868.   TEXT 325,225,"+LIN"
  2869.   TEXT 325,280,"-LIN"
  2870.   GRAPHMODE 1
  2871.   COLOR 0
  2872.   DEFLINE ,,1,1
  2873.   DRAW 185,200 TO 185,300
  2874.   DRAW 415,200 TO 415,300
  2875.   DEFLINE ,,0,1
  2876.   DRAW 300,310 TO 300,300
  2877.   DEFLINE ,,0,0
  2878.   GRAPHMODE 3
  2879.   COLOR 1
  2880.   TEXT 160,245,"LEFT"
  2881.   TEXT 154,258,"DEPTH"
  2882.   TEXT 417,245,"RIGHT"
  2883.   TEXT 417,258,"DEPTH"
  2884.   TEXT 240,184,"KEYBOARD LEVEL SCALING"
  2885.   TEXT 200,198,"LEFT CURVE            RIGHT CURVE"
  2886.   TEXT 270,320,"BREAK POINT"
  2887.   GRAPHMODE 1
  2888.   DO
  2889.     EXIT IF MOUSEK
  2890.   LOOP
  2891.   DO
  2892.     EXIT IF MOUSEK=0
  2893.   LOOP
  2894.   SPUT screen$
  2895.   SHOWM
  2896. RETURN
  2897. > PROCEDURE hilfe_sensitivity
  2898.   SGET screen$
  2899.   DO
  2900.     EXIT IF MOUSEK=0
  2901.   LOOP
  2902.   PBOX 157,49,617,389
  2903.   PBOX 34,49,157,377
  2904.   GRAPHMODE 3
  2905.   DEFTEXT ,,,6
  2906.   h#=60
  2907.   v#=65
  2908.   TEXT h#,v#,"Empfindlichkeit"
  2909.   ADD v#,20
  2910.   TEXT h#,v#,"Anschlagdynamik- und Amplitudenmodulations-Empfindlichkeit für die"
  2911.   ADD v#,10
  2912.   TEXT h#,v#,"einzelnen  Operatoren,  sowie Tonhöhen'modulations'empfindlichkeit"
  2913.   ADD v#,10
  2914.   TEXT h#,v#,"(gemeinsam für alle Operatoren)."
  2915.   ADD v#,30
  2916.   TEXT h#,v#,"Velocity (0-7) (Empfindlichkeit für Anschlagdynamik)"
  2917.   ADD v#,10
  2918.   TEXT h#,v#,"Hiermit  wird eingestellt, wie stark sich die Anschlagsdynamik auf"
  2919.   ADD v#,10
  2920.   TEXT h#,v#,"den Ausgangspegel  der einzelnen Operatoren auswirkt. Bei 0 bleibt"
  2921.   ADD v#,10
  2922.   TEXT h#,v#,"die Anschlagsdynamik wirkungslos."
  2923.   ADD v#,20
  2924.   TEXT h#,v#,"Ams: (0-7) (Empfindlichkeit für Amplitudenmodulation)"
  2925.   ADD v#,10
  2926.   TEXT h#,v#,"Hiermit  wird bestimmt,  wie der Operator auf die vom LFO (Nieder-"
  2927.   ADD v#,10
  2928.   TEXT h#,v#,"frequenzoszillator) und durch EG-Bias (Vorspannung des Hüllkurven-"
  2929.   ADD v#,10
  2930.   TEXT h#,v#,"generators) erhaltene Amplitudenmodulation anspricht. Bei 0 bleibt"
  2931.   ADD v#,10
  2932.   TEXT h#,v#,"der Operator unbeeinflußt."
  2933.   ADD v#,20
  2934.   TEXT h#,v#,"Pms: (0-7) (Empfindlichkeit für Tonhöhenmodulation)"
  2935.   ADD v#,10
  2936.   TEXT h#,v#,"Hiermit  wird  eingestellt,  wie  die gesamte Stimme auf Tonhöhen-"
  2937.   ADD v#,10
  2938.   TEXT h#,v#,"modulationssignale  vom  LFO anspricht. Bei 0 ändert sich die Ton-"
  2939.   ADD v#,10
  2940.   TEXT h#,v#,"höhe der Instrumentstimme nicht."
  2941.   DEFTEXT ,,,4
  2942.   GRAPHMODE 1
  2943.   DO
  2944.     EXIT IF MOUSEK
  2945.   LOOP
  2946.   DO
  2947.     EXIT IF MOUSEK=0
  2948.   LOOP
  2949.   SPUT screen$
  2950.   SHOWM
  2951. RETURN
  2952. > PROCEDURE hilfe_pitch_bend
  2953.   SGET screen$
  2954.   DO
  2955.     EXIT IF MOUSEK=0
  2956.   LOOP
  2957.   PBOX 157,49,617,389
  2958.   PBOX 34,49,157,377
  2959.   GRAPHMODE 3
  2960.   DEFTEXT ,,,6
  2961.   h#=60
  2962.   v#=65
  2963.   TEXT h#,v#,"Tonhöhenbeugung"
  2964.   ADD v#,20
  2965.   TEXT h#,v#,"Range: (0-12) (Bereich)"
  2966.   ADD v#,10
  2967.   TEXT h#,v#,"       Bei  der  Einstellung  0  bleibt  das Tonhöhenbeugungsrad"
  2968.   ADD v#,10
  2969.   TEXT h#,v#,"       ohne Wirkung. Bei 12 beträgt die maximale Tonhöhenbeugung"
  2970.   ADD v#,10
  2971.   TEXT h#,v#,"       eine Oktave."
  2972.   ADD v#,20
  2973.   TEXT h#,v#,"Step: (0-12) (Schritt)"
  2974.   ADD v#,10
  2975.   TEXT h#,v#,"       Bei   der  Einstellung  0  erfolgt   die   Tonhöhenbeugung"
  2976.   ADD v#,10
  2977.   TEXT h#,v#,"       übergangslos.  Bei Einstellungen zwischen 1 und 12 erfolgt"
  2978.   ADD v#,10
  2979.   TEXT h#,v#,"       die Tonhöhenbeugung in 'Schritten' von 1 bis 12 Halbtönen,"
  2980.   ADD v#,10
  2981.   TEXT h#,v#,"       wobei als  Bereich (Range)  automatisch 12 vorgegeben ist."
  2982.   DEFTEXT ,,,4
  2983.   GRAPHMODE 1
  2984.   DO
  2985.     EXIT IF MOUSEK
  2986.   LOOP
  2987.   DO
  2988.     EXIT IF MOUSEK=0
  2989.   LOOP
  2990.   SPUT screen$
  2991.   SHOWM
  2992. RETURN
  2993. > PROCEDURE hilfe_portamento
  2994.   SGET screen$
  2995.   DO
  2996.     EXIT IF MOUSEK=0
  2997.   LOOP
  2998.   PBOX 157,49,617,389
  2999.   PBOX 34,49,157,377
  3000.   GRAPHMODE 3
  3001.   DEFTEXT ,,,6
  3002.   h#=60
  3003.   v#=65
  3004.   TEXT h#,v#,"Portamento"
  3005.   ADD v#,20
  3006.   TEXT h#,v#,"Für das Portamento (gleitender Übergang  zwischen Noten) gibt es zwei"
  3007.   ADD v#,10
  3008.   TEXT h#,v#,"Betriebsarten,  die  von  der gewählten Tastenbetriebsart (Poly/Mono)"
  3009.   ADD v#,10
  3010.   TEXT h#,v#,"abhängig  sind.  Portamento  kann  über entsprechende  MIDI-Meldungen"
  3011.   ADD v#,10
  3012.   TEXT h#,v#,"ein- und ausgeschaltet werden."
  3013.   ADD v#,20
  3014.   TEXT h#,v#,"Portamento-Betriebsart"
  3015.   ADD v#,20
  3016.   TEXT h#,v#,"Für Poly:"
  3017.   ADD v#,20
  3018.   TEXT h#,v#,"  Sus. Key Retrain:  Mit dem  Sustain-Pedal angehaltene Noten bleiben"
  3019.   ADD v#,10
  3020.   TEXT h#,v#,"                     beim Übergang zur neuen Note erhalten."
  3021.   ADD v#,20
  3022.   TEXT h#,v#,"  Sus. Key Follow:   Mit dem  Sustain-Pedal angehaltene Noten gleiten"
  3023.   ADD v#,10
  3024.   TEXT h#,v#,"                     in die nächste über."
  3025.   ADD v#,20
  3026.   TEXT h#,v#,"Für Mono:"
  3027.   ADD v#,20
  3028.   TEXT h#,v#,"  Finger-Portamento: Portamento  erfolgt  nur,  wenn  eine Taste beim"
  3029.   ADD v#,10
  3030.   TEXT h#,v#,"                     Anschlagen  einer neuen noch niedergedrückt ist."
  3031.   ADD v#,20
  3032.   TEXT h#,v#,"  Volles Portamento: Portamento wird immer erzeugt."
  3033.   ADD v#,20
  3034.   TEXT h#,v#,"Step: (0-12) (Schritt)"
  3035.   ADD v#,10
  3036.   TEXT h#,v#,"      Das 'Übergleiten' von  einer Note  zur nächsten kann übergangs-"
  3037.   ADD v#,10
  3038.   TEXT h#,v#,"      los (Step=0) oder in Schritten von bis zu einer Oktave erfolgen"
  3039.   ADD v#,20
  3040.   TEXT h#,v#,"Time: (0-99) (Portamentozeit)"
  3041.   ADD v#,10
  3042.   TEXT h#,v#,"      Hiermit  bestimmen  Sie die für den Übergang von einer Note zur"
  3043.   ADD v#,10
  3044.   TEXT h#,v#,"      anderen  benötigte  Zeit.  Bei 0 ist  der Effekt ausgeschaltet."
  3045.   ADD v#,10
  3046.   TEXT h#,v#,"             99 entspricht dem langsamsten Portamento."
  3047.   DEFTEXT ,,,4
  3048.   GRAPHMODE 1
  3049.   DO
  3050.     EXIT IF MOUSEK
  3051.   LOOP
  3052.   DO
  3053.     EXIT IF MOUSEK=0
  3054.   LOOP
  3055.   SPUT screen$
  3056.   SHOWM
  3057. RETURN
  3058. > PROCEDURE hilfe_modulation_wheel
  3059.   SGET screen$
  3060.   DO
  3061.     EXIT IF MOUSEK=0
  3062.   LOOP
  3063.   PBOX 157,49,617,389
  3064.   PBOX 34,49,157,377
  3065.   GRAPHMODE 3
  3066.   DEFTEXT ,,,6
  3067.   h#=60
  3068.   v#=65
  3069.   TEXT h#,v#,"Modulationsrad"
  3070.   ADD v#,20
  3071.   TEXT h#,v#,"Pmod:    (0-99) (Tonhöhenmodulation)"
  3072.   ADD v#,10
  3073.   TEXT h#,v#,"Amod:    (0-99) (Amplitudenmodulation)"
  3074.   ADD v#,10
  3075.   TEXT h#,v#,"EG-Bias: (0-99) (Vorspannung des Hüllkurvengenerators)"
  3076.   ADD v#,10
  3077.   TEXT h#,v#,"Volume:  (0-99) (Lautstärke)"
  3078.   ADD v#,30
  3079.   TEXT h#,v#,"Hier  können  Sie  bestimmen,  wie die  Instrumente auf ankommende"
  3080.   ADD v#,10
  3081.   TEXT h#,v#,"Modulationsrad-  bzw. Schwellerpedal-Signale  reagiert,  mit denen"
  3082.   ADD v#,10
  3083.   TEXT h#,v#,"die  Stärke  der  vom  LFO  kommenden  Amplituden-  bzw. Tonhöhen-"
  3084.   ADD v#,10
  3085.   TEXT h#,v#,"modulation  geregelt  werden  kann.  Die Regler können jedoch auch"
  3086.   ADD v#,10
  3087.   TEXT h#,v#,"direkt  den  Ausgangspegel  von  Operatoren  beeinflussen d.h. den"
  3088.   ADD v#,10
  3089.   TEXT h#,v#,"Hüllkurvengenerator (EG)  'vorspannen'.  (Der Operator muß auf die"
  3090.   ADD v#,10
  3091.   TEXT h#,v#,"Amplitudenmodulation  ansprechen können, d.h. mit einer entsprech-"
  3092.   ADD v#,10
  3093.   TEXT h#,v#,"enden  Empfindlichkeitseinstellung programmiert sein.) Bei höheren"
  3094.   ADD v#,10
  3095.   TEXT h#,v#,"Werten nimmt der Reglereffekt zu. Das Schwellerpedal (jedoch nicht"
  3096.   ADD v#,10
  3097.   TEXT h#,v#,"der Modulationsregler) kann ebenfalls die Lautstärke beeinflussen."
  3098.   DEFTEXT ,,,4
  3099.   GRAPHMODE 1
  3100.   DO
  3101.     EXIT IF MOUSEK
  3102.   LOOP
  3103.   DO
  3104.     EXIT IF MOUSEK=0
  3105.   LOOP
  3106.   SPUT screen$
  3107.   SHOWM
  3108. RETURN
  3109. > PROCEDURE hilfe_foot_control
  3110.   SGET screen$
  3111.   DO
  3112.     EXIT IF MOUSEK=0
  3113.   LOOP
  3114.   PBOX 157,49,617,389
  3115.   PBOX 34,49,157,377
  3116.   GRAPHMODE 3
  3117.   DEFTEXT ,,,6
  3118.   h#=60
  3119.   v#=65
  3120.   TEXT h#,v#,"Schwellerpedal"
  3121.   ADD v#,20
  3122.   TEXT h#,v#,"Pmod:    (0-99) (Tonhöhenmodulation)"
  3123.   ADD v#,10
  3124.   TEXT h#,v#,"Amod:    (0-99) (Amplitudenmodulation)"
  3125.   ADD v#,10
  3126.   TEXT h#,v#,"EG-Bias: (0-99) (Vorspannung des Hüllkurvengenerators)"
  3127.   ADD v#,10
  3128.   TEXT h#,v#,"Volume:  (0-99) (Lautstärke)"
  3129.   ADD v#,30
  3130.   TEXT h#,v#,"Hier  können  Sie bestimmen,  wie die  Instrumente  auf ankommende"
  3131.   ADD v#,10
  3132.   TEXT h#,v#,"Modulationsrad-  bzw. Schwellerpedal-Signale  reagiert,  mit denen"
  3133.   ADD v#,10
  3134.   TEXT h#,v#,"die  Stärke  der  vom  LFO  kommenden  Amplituden- bzw.  Tonhöhen-"
  3135.   ADD v#,10
  3136.   TEXT h#,v#,"modulation  geregelt  werden kann.  Die Regler  können jedoch auch"
  3137.   ADD v#,10
  3138.   TEXT h#,v#,"direkt  den  Ausgangspegel  von  Operatoren  beeinflussen d.h. den"
  3139.   ADD v#,10
  3140.   TEXT h#,v#,"Hüllkurvengenerator (EG)  'vorspannen'.  (Der Operator muß auf die"
  3141.   ADD v#,10
  3142.   TEXT h#,v#,"Amplitudenmodulation  ansprechen können, d.h. mit einer entsprech-"
  3143.   ADD v#,10
  3144.   TEXT h#,v#,"enden  Empfindlichkeitseinstellung programmiert sein.) Bei höheren"
  3145.   ADD v#,10
  3146.   TEXT h#,v#,"Werten nimmt der Reglereffekt zu. Das Schwellerpedal (jedoch nicht"
  3147.   ADD v#,10
  3148.   TEXT h#,v#,"der Modulationsregler) kann ebenfalls die Lautstärke beeinflussen."
  3149.   DEFTEXT ,,,4
  3150.   GRAPHMODE 1
  3151.   DO
  3152.     EXIT IF MOUSEK
  3153.   LOOP
  3154.   DO
  3155.     EXIT IF MOUSEK=0
  3156.   LOOP
  3157.   SPUT screen$
  3158.   SHOWM
  3159. RETURN
  3160. > PROCEDURE hilfe_breath_control
  3161.   SGET screen$
  3162.   DO
  3163.     EXIT IF MOUSEK=0
  3164.   LOOP
  3165.   PBOX 157,49,617,389
  3166.   PBOX 34,49,157,377
  3167.   GRAPHMODE 3
  3168.   DEFTEXT ,,,6
  3169.   h#=60
  3170.   v#=65
  3171.   TEXT h#,v#,"Blaswandler"
  3172.   ADD v#,20
  3173.   TEXT h#,v#,"Pmod:    (0-99) (Tonhöhenmodulation)"
  3174.   ADD v#,10
  3175.   TEXT h#,v#,"Amod:    (0-99) (Amplitudenmodulation)"
  3176.   ADD v#,10
  3177.   TEXT h#,v#,"EG-Bias: (0-99) (Vorspannung des Hüllkurvengenerators)"
  3178.   ADD v#,10
  3179.   TEXT h#,v#,"P bias:  (-50 - +50) (Tonhöhenvorspannung)"
  3180.   ADD v#,30
  3181.   TEXT h#,v#,"Hier  können  Sie bestimmen,  wie die  Instrumente auf ankommende"
  3182.   ADD v#,10
  3183.   TEXT h#,v#,"Modulationsrad-  bzw. Schwellerpedal-Signale  reagiert, mit denen"
  3184.   ADD v#,10
  3185.   TEXT h#,v#,"die  Stärke  der  vom  LFO  kommenden Amplituden-  bzw. Tonhöhen-"
  3186.   ADD v#,10
  3187.   TEXT h#,v#,"modulation  geregelt  werden kann.  Die Regler können jedoch auch"
  3188.   ADD v#,10
  3189.   TEXT h#,v#,"direkt  den  Ausgangspegel  von  Operatoren beeinflussen d.h. den"
  3190.   ADD v#,10
  3191.   TEXT h#,v#,"Hüllkurvengenerator (EG)  'vorspannen'. (Der Operator muß auf die"
  3192.   ADD v#,10
  3193.   TEXT h#,v#,"Amplitudenmodulation ansprechen können, d.h. mit einer entsprech-"
  3194.   ADD v#,10
  3195.   TEXT h#,v#,"enden Empfindlichkeitseinstellung programmiert sein.) Bei höheren"
  3196.   ADD v#,10
  3197.   TEXT h#,v#,"Werten nimmt der Reglereffekt zu."
  3198.   ADD v#,20
  3199.   TEXT h#,v#,"Neben  den drei oben bereits erklärten Parametern können Sie hier"
  3200.   ADD v#,10
  3201.   TEXT h#,v#,"den  Blaswandler  über  die  'Tonhöhenvorspannung' direkt auf die"
  3202.   ADD v#,10
  3203.   TEXT h#,v#,"Töne einwirken lassen. Positive Werte führen zu einem Anstieg der"
  3204.   ADD v#,10
  3205.   TEXT h#,v#,"Tonhöhe, negative zu einem Abfall."
  3206.   DEFTEXT ,,,4
  3207.   GRAPHMODE 1
  3208.   DO
  3209.     EXIT IF MOUSEK
  3210.   LOOP
  3211.   DO
  3212.     EXIT IF MOUSEK=0
  3213.   LOOP
  3214.   SPUT screen$
  3215.   SHOWM
  3216. RETURN
  3217. > PROCEDURE hilfe_after_touch
  3218.   SGET screen$
  3219.   DO
  3220.     EXIT IF MOUSEK=0
  3221.   LOOP
  3222.   PBOX 157,49,617,389
  3223.   PBOX 34,49,157,377
  3224.   GRAPHMODE 3
  3225.   DEFTEXT ,,,6
  3226.   h#=60
  3227.   v#=65
  3228.   TEXT h#,v#,"Freigabedynamik"
  3229.   ADD v#,20
  3230.   TEXT h#,v#,"Pmod:    (0-99) (Tonhöhenmodulation)"
  3231.   ADD v#,10
  3232.   TEXT h#,v#,"Amod:    (0-99) (Amplitudenmodulation)"
  3233.   ADD v#,10
  3234.   TEXT h#,v#,"EG-Bias: (0-99) (Vorspannung des Hüllkurvengenerators)"
  3235.   ADD v#,10
  3236.   TEXT h#,v#,"P bias:  (-50 - +50) (Tonhöhenvorspannung)"
  3237.   ADD v#,30
  3238.   TEXT h#,v#,"Hier  können  Sie bestimmen,  wie die  Instrumente auf ankommende"
  3239.   ADD v#,10
  3240.   TEXT h#,v#,"Modulationsrad-  bzw. Schwellerpedal-Signale  reagiert, mit denen"
  3241.   ADD v#,10
  3242.   TEXT h#,v#,"die  Stärke  der  vom  LFO  kommenden  Amplituden- bzw. Tonhöhen-"
  3243.   ADD v#,10
  3244.   TEXT h#,v#,"modulation  geregelt  werden kann.  Die Regler können jedoch auch"
  3245.   ADD v#,10
  3246.   TEXT h#,v#,"direkt  den  Ausgangspegel  von  Operatoren beeinflussen d.h. den"
  3247.   ADD v#,10
  3248.   TEXT h#,v#,"Hüllkurvengenerator (EG) 'vorspannen'. (Der  Operator muß auf die"
  3249.   ADD v#,10
  3250.   TEXT h#,v#,"Amplitudenmodulation ansprechen können, d.h. mit einer entsprech-"
  3251.   ADD v#,10
  3252.   TEXT h#,v#,"enden Empfindlichkeitseinstellung programmiert sein.) Bei höheren"
  3253.   ADD v#,10
  3254.   TEXT h#,v#,"Werten nimmt der Reglereffekt zu."
  3255.   ADD v#,20
  3256.   TEXT h#,v#,"Neben  den drei oben bereits erklärten Parametern können Sie hier"
  3257.   ADD v#,10
  3258.   TEXT h#,v#,"die Freigabedynamik über die 'Tonhöhenvorspannung' direkt auf die"
  3259.   ADD v#,10
  3260.   TEXT h#,v#,"Töne einwirken lassen. Positive Werte führen zu einem Anstieg der"
  3261.   ADD v#,10
  3262.   TEXT h#,v#,"Tonhöhe, negative zu einem Abfall."
  3263.   DEFTEXT ,,,4
  3264.   GRAPHMODE 1
  3265.   DO
  3266.     EXIT IF MOUSEK
  3267.   LOOP
  3268.   DO
  3269.     EXIT IF MOUSEK=0
  3270.   LOOP
  3271.   SPUT screen$
  3272.   SHOWM
  3273. RETURN
  3274. ' --------------------------------HILFSTEXT AUSGEBEN (ENDE)
  3275. > PROCEDURE plus
  3276.   l#=1
  3277.   INC vn#
  3278.   IF vn#>64
  3279.     vn#=1
  3280.   ENDIF
  3281.   DEFTEXT 1,0,0,6
  3282.   IF vn#<10
  3283.     TEXT 5,40,"0"
  3284.     TEXT 13,40,vn#
  3285.   ELSE
  3286.     TEXT 5,40,vn#
  3287.   ENDIF
  3288.   DEFTEXT 1,0,0,4
  3289.   GOSUB list_voicename
  3290.   SHOWM
  3291.   DO
  3292.     EXIT IF MOUSEK=0 OR MOUSEK=2 OR MOUSEK=3
  3293.   LOOP
  3294.   IF MOUSEK=0 OR MOUSEK=1 OR MOUSEK=2
  3295.     CLR l#
  3296.     GOSUB list_algorithm
  3297.     GOSUB list_lfo
  3298.     GOSUB list_pitch_eg
  3299.     GOSUB list_oscillator
  3300.     GOSUB list_eg
  3301.     GOSUB list_scaling_mode
  3302.     GOSUB list_sensitivity
  3303.     GOSUB list_pitch_bend
  3304.     GOSUB list_portamento
  3305.     GOSUB list_modulations_wheel
  3306.     GOSUB list_foot_control
  3307.     GOSUB list_breath_control
  3308.     GOSUB list_aftertouch
  3309.   ELSE
  3310.     PAUSE 10
  3311.   ENDIF
  3312.   SHOWM
  3313. RETURN
  3314. > PROCEDURE minus
  3315.   l#=1
  3316.   DEC vn#
  3317.   IF vn#<1
  3318.     vn#=64
  3319.   ENDIF
  3320.   DEFTEXT 1,0,0,6
  3321.   IF vn#<10
  3322.     TEXT 5,40,"0"
  3323.     TEXT 13,40,vn#
  3324.   ELSE
  3325.     TEXT 5,40,vn#
  3326.   ENDIF
  3327.   DEFTEXT 1,0,0,4
  3328.   GOSUB list_voicename
  3329.   SHOWM
  3330.   DO
  3331.     EXIT IF MOUSEK=0 OR MOUSEK=2 OR MOUSEK=3
  3332.   LOOP
  3333.   IF MOUSEK=0 OR MOUSEK=1 OR MOUSEK=2
  3334.     CLR l#
  3335.     GOSUB list_algorithm
  3336.     GOSUB list_lfo
  3337.     GOSUB list_pitch_eg
  3338.     GOSUB list_oscillator
  3339.     GOSUB list_eg
  3340.     GOSUB list_scaling_mode
  3341.     GOSUB list_sensitivity
  3342.     GOSUB list_pitch_bend
  3343.     GOSUB list_portamento
  3344.     GOSUB list_modulations_wheel
  3345.     GOSUB list_foot_control
  3346.     GOSUB list_breath_control
  3347.     GOSUB list_aftertouch
  3348.   ELSE
  3349.     PAUSE 10
  3350.   ENDIF
  3351.   SHOWM
  3352. RETURN
  3353.